Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
neon902
1 / 1 / 0
Регистрация: 01.07.2010
Сообщений: 62
#1

Составить базу данных о квартирах дома (от 6 до 12). Для каждой квартиры указать номер, жилую площадь, общую площадь, количество жильцов... - C++

01.07.2010, 18:53. Просмотров 1317. Ответов 12
Метки нет (Все метки)

Составить базу данных о квартирах дома (от 6 до 12). Для каждой квартиры указать номер, жилую площадь, общую площадь, количество жильцов, количество детей. Упорядочить квартиры по общей площади или по количеству жильцов или по метражу на одного жильца.
Помогите с прогой.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.07.2010, 18:53     Составить базу данных о квартирах дома (от 6 до 12). Для каждой квартиры указать номер, жилую площадь, общую площадь, количество жильцов...
Посмотрите здесь:

Дана информация о пяти квартирах. Запись имеет вид: фамилия владельца, площадь, число комнат, этаж. Вывести данные о квартирах - C++
Дана информация о пяти квартирах. Запись имеет вид: фамилия владельца, площадь, число комнат, этаж. Вывести данные о квартирах с площадью...

Создать структуру(номер по порядку,фамилия, адрес, № жека) вывести фамилии жильцов, дома которых относятся к пятому ЖЭКу - C++
Здравствуйте,уважаемые форумчане!Помогите пожалуйста с написанием программ-а то завтра сдать уже надо... Препод ставит такие требования: ...

Поменять местами номер дома в N-ом адресе и номер квартиры в M-ом адресе - C++
Описать переменную «адрес», содержащую: название города, название улицы, номер дома, корпус, номер квартиры. Создать массив адресов....

Рассчитать стоимость квартиры, если известны площадь, этаж и курс у.е - C++
Квадратный метр площади в строящемся доме , стоит 270 у.е. (курс НБУ). Стоимость квартиры С определяется по формуле: С = СК * П * К, где ВК...

Найти общую площадь - C++
Вот задачка. Можете подсказать идейку, как ее решить? Код я могу и сама написать. Может с помощью множеств?

Даны отрезки а, в, с и d. Для каждой тройки этих отрезков напечатать площадь данного треугольника - C++
Даны отрезки а, в, с и d. Для каждой тройки этих отрезков, из которых можно построить треугольник, напечатать площадь данного треугольника....

Найти площадь пересечения, то есть общую часть двух прямоугольников (не могу понять алгоритм решения) - C++
Помогите пожалуйста, не могу понять алгоритм решения задачи: Напишите программу, которая находит площадь пересечения, то есть общей...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
В астрале
Эксперт С++
7968 / 4730 / 320
Регистрация: 24.06.2010
Сообщений: 10,539
Завершенные тесты: 3
01.07.2010, 18:55     Составить базу данных о квартирах дома (от 6 до 12). Для каждой квартиры указать номер, жилую площадь, общую площадь, количество жильцов... #2
Цитата Сообщение от neon902 Посмотреть сообщение
Составить базу данных о квартирах дома (от 6 до 12). Для каждой квартиры указать номер, жилую площадь, общую площадь, количество жильцов, количество детей. Упорядочить квартиры по общей площади или по количеству жильцов или по метражу на одного жильца.
Помогите с прогой.
Структуры или классы? А если точнее Си или Си++
neon902
1 / 1 / 0
Регистрация: 01.07.2010
Сообщений: 62
01.07.2010, 19:36  [ТС]     Составить базу данных о квартирах дома (от 6 до 12). Для каждой квартиры указать номер, жилую площадь, общую площадь, количество жильцов... #3
Задание сам не допонимаю, написать нужно на Си. Помогите плиз
ForEveR
В астрале
Эксперт С++
7968 / 4730 / 320
Регистрация: 24.06.2010
Сообщений: 10,539
Завершенные тесты: 3
01.07.2010, 19:41     Составить базу данных о квартирах дома (от 6 до 12). Для каждой квартиры указать номер, жилую площадь, общую площадь, количество жильцов... #4
Структура... Хм. Без файла?
neon902
1 / 1 / 0
Регистрация: 01.07.2010
Сообщений: 62
01.07.2010, 19:44  [ТС]     Составить базу данных о квартирах дома (от 6 до 12). Для каждой квартиры указать номер, жилую площадь, общую площадь, количество жильцов... #5
С файлом
ForEveR
В астрале
Эксперт С++
7968 / 4730 / 320
Регистрация: 24.06.2010
Сообщений: 10,539
Завершенные тесты: 3
01.07.2010, 19:46     Составить базу данных о квартирах дома (от 6 до 12). Для каждой квартиры указать номер, жилую площадь, общую площадь, количество жильцов... #6
Окей. Следующий вопрос. Что значит квартирах дома (от 6 до 12).

6 минимум, 12 максимум или 6-12 - номера квартир?
neon902
1 / 1 / 0
Регистрация: 01.07.2010
Сообщений: 62
01.07.2010, 19:49  [ТС]     Составить базу данных о квартирах дома (от 6 до 12). Для каждой квартиры указать номер, жилую площадь, общую площадь, количество жильцов... #7
6 минимум, 12 максимум
ForEveR
В астрале
Эксперт С++
7968 / 4730 / 320
Регистрация: 24.06.2010
Сообщений: 10,539
Завершенные тесты: 3
01.07.2010, 21:16     Составить базу данных о квартирах дома (от 6 до 12). Для каждой квартиры указать номер, жилую площадь, общую площадь, количество жильцов... #8
Предварительный набросок. Дабы не потерять если перейду на ноут

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct Flat
{
    int number;
    float larea;
    float farea;
    int peop;
    int child;
};
Flat input()
{
    Flat Temp;
    printf("Enter number of the flat\n");
    scanf("%d", &Temp.number);
    printf("Enter larea of the flat\n");
    scanf("%g", &Temp.larea);
    printf("Enter farea of the flat\n");
    scanf("%g", &Temp.farea);
    printf("Enter num of peoples\n");
    scanf("%d", &Temp.peop);
    printf("Enter num of childs\n");
    scanf("%d", &Temp.child);
    return Temp;
}
void output(Flat Temp)
{
    printf("Number of the flat: ");
    printf("%d\n", Temp.number);
    printf("Larea of the flat: ");
    printf("%g\n", Temp.larea);
    printf("Farea of the flat: ");
    printf("%g\n", Temp.farea);
    printf("Num of peoples in the flat: ");
    printf("%d\n", Temp.peop);
    printf("Num of childs in the flat: ");
    printf("%d\n", Temp.child);
}
int main()
{
    Flat M;
    M=input();
    output(M);
    return 0;
}
Добавлено через 42 минуты
Теперь буду думать о том как сортировку сделать

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct Flat
{
    int number;
    float larea;
    float farea;
    int peop;
    int child;
};
Flat input()
{
    Flat Temp;
    printf("Enter number of the flat\n");
    scanf("%d", &Temp.number);
    printf("Enter larea of the flat\n");
    scanf("%g", &Temp.larea);
    printf("Enter farea of the flat\n");
    scanf("%g", &Temp.farea);
    printf("Enter num of peoples\n");
    scanf("%d", &Temp.peop);
    printf("Enter num of childs\n");
    scanf("%d", &Temp.child);
    printf("\n");
    return Temp;
}
void output(Flat Temp)
{
    printf("Number of the flat: ");
    printf("%d\n", Temp.number);
    printf("Larea of the flat: ");
    printf("%g\n", Temp.larea);
    printf("Farea of the flat: ");
    printf("%g\n", Temp.farea);
    printf("Num of peoples in the flat: ");
    printf("%d\n", Temp.peop);
    printf("Num of childs in the flat: ");
    printf("%d\n", Temp.child);
    printf("\n");
}
Flat input_f(FILE*f)
{
    Flat Temp;
    fscanf(f,"%d\n", &Temp.number);
    fscanf(f, "%g\n", &Temp.larea);
    fscanf(f, "%g\n", &Temp.farea);
    fscanf (f, "%d\n", &Temp.peop);
    fscanf (f, "%d\n", &Temp.child);
    return Temp;
}
int fill (FILE*f, Flat M[])
{
    int n;
    f=fopen("D:\\DB.txt","r");
    fscanf (f, "%d\n", &n);
    for (int i=0; i<n; i++)
        M[i]=input_f(f);
    return n;
}
void output_m (Flat M[],FILE*f)
{
    int n;
    fscanf (f, "%d\n", &n);
    for (int i=0;i<n;i++)
        output(M[i]);
}
void put_into_file (FILE*f, Flat t)
{
    fprintf(f, "%d \n", t.number); 
    fprintf(f, "%g \n", t.larea);
    fprintf(f, "%g \n", t.farea);
    fprintf (f, "%d \n", t.peop);
    fprintf (f, "%d \n", t.child);
}
int put_all_into_file (Flat M[], int n)
{
    FILE*f=fopen("D:\\DB.txt", "w");
    if (f==NULL)
    {
        printf ("No file");
        return -1;
    }
    fprintf (f, "%d \n", n);
    for (int i=0;i<n;i++)
        put_into_file (f, M[i]);
    fclose(f);
    return 0;
}
int show()
{
    int k=0;
    char u[10];
    puts ("Choose option 1, for see DB");
    puts ("Choose option 2 for add information in DB");
    puts ("Choose option 0, for exit");
    scanf("%s",u);
    if ((u[0]>='0')&&(u[0]<='9'))
        k=atoi(u);
    return k;
}
int sw (Flat M[], int n, int k)
{
    switch (k)
    {
        case 1: for (int i=0;i<n;i++)output(M[i]);
               break;
        case 2: {
            M[n]=input();
            n++;
            break;
                }
        case 0:
            {
            printf("Finish. Exit from programm\n"); 
            exit(0);
            break;
            }
        default:
            printf ("Fail. Choose other option of menu\n");
    }
    return n;
}
int menu (Flat M[], int n)
{
    int k=show();
    while(1)
    {
        n=sw(M,n,k);
        k=show();
    }
    return n;
}
int main()
{
    Flat M[10];
    int n; int l=0;
    FILE*f=fopen("D:\\DB.txt", "r");
    if(f==0)
    {
        printf ("No file\n");
        return 0;
    }
    n=fill(f,M);
    n=menu(M,n);
    put_all_into_file(M,n);
    return 0;
}
Добавлено через 26 минут
На этом мой творческий потенциал на пока что иссяк=(
neon902
1 / 1 / 0
Регистрация: 01.07.2010
Сообщений: 62
01.07.2010, 21:39  [ТС]     Составить базу данных о квартирах дома (от 6 до 12). Для каждой квартиры указать номер, жилую площадь, общую площадь, количество жильцов... #9
)) спасибо, облекчил всёже задачю, можешь ещё входной файлик прикрепить или написать, в каком виде там записывать?))
ForEveR
В астрале
Эксперт С++
7968 / 4730 / 320
Регистрация: 24.06.2010
Сообщений: 10,539
Завершенные тесты: 3
01.07.2010, 21:42     Составить базу данных о квартирах дома (от 6 до 12). Для каждой квартиры указать номер, жилую площадь, общую площадь, количество жильцов... #10
Цитата Сообщение от neon902 Посмотреть сообщение
)) спасибо, облекчил всёже задачю, можешь ещё входной файлик прикрепить или написать, в каком виде там записывать?))
Лови. Вводить... Хм. 1-ое число - кол-во элементов массива структур) Ну а далее все просто вводится в столбик значение полей
Вложения
Тип файла: txt DB.txt (45 байт, 33 просмотров)
neon902
1 / 1 / 0
Регистрация: 01.07.2010
Сообщений: 62
04.07.2010, 16:32  [ТС]     Составить базу данных о квартирах дома (от 6 до 12). Для каждой квартиры указать номер, жилую площадь, общую площадь, количество жильцов... #11
Lavroff, я пытался сделать чтоб он сортировал бд, но что-то не получается, так как это твой код, может ты сможешь понять что я хотел сделать и скажешь где моя ошибка?

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct Flat{
int number;
int larea;
int farea;
int peop;
int child;};
int q,w[60],buf;
Flat input(){
Flat Temp;
printf("Enter number of the flat\n");
scanf("%d", &Temp.number);
printf("Enter larea of the flat\n");
scanf("%d", &Temp.larea);
printf("Enter farea of the flat\n");
scanf("%d", &Temp.farea);
printf("Enter num of peoples\n");
scanf("%d", &Temp.peop);
printf("Enter num of childs\n");
scanf("%d", &Temp.child);
printf("\n");
return Temp;}
void output(Flat Temp){
printf("Number of the flat: ");
printf("%d\n", Temp.number);
printf("Larea of the flat: ");
printf("%d\n", Temp.larea);
printf("Farea of the flat: ");
printf("%d\n", Temp.farea);
printf("Num of peoples in the flat: ");
printf("%d\n", Temp.peop);
printf("Num of childs in the flat: ");
printf("%d\n", Temp.child);
printf("\n");}
Flat input_f(FILE*f){
Flat Temp;
fscanf(f,"%d", &q);
for(int i=0;i<q;i++){
fscanf(f,"%d", &w[i]);
fscanf(f,"%d", &w[i+1]);
fscanf(f,"%d", &w[i+2]);
fscanf(f,"%d", &w[i+3]);
fscanf(f,"%d", &w[i+4]);}
q*=5;
for(int j=0;j<q;j+=5){
for(int i=0;i<q;i+=5){
if(w[i+2]>w[i+7]){
buf=w[i+7];
w[i+7]=w[i+2];
w[i+2]=buf;
buf=w[i];
w[i]=w[i+5];
w[i+5]=buf;
buf=w[i+1];
w[i+1]=w[i+6];
w[i+6]=buf;
buf=w[i+3];
w[i+3]=w[i+8];
w[i+8]=buf;
buf=w[i+4];
w[i+4]=w[i+9];
w[i+9]=buf;}}}
for(int k=0;k<q;k++){
Temp.number=w[k];
Temp.larea=w[k+1];
Temp.farea=w[k+2];
Temp.peop=w[k+3];
Temp.child=w[k+4];}
return Temp;}
int fill (FILE*f, Flat M[]){
int n;
f=fopen("18in.txt","r");
fscanf (f, "%d\n", &n);
for (int i=0; i<n; i++)
M[i]=input_f(f);
return n;}
void output_m (Flat M[],FILE*f){
int n;
fscanf (f, "%d\n", &n);
for (int i=0;i<n;i++)
output(M[i]);}
void put_into_file (FILE*f, Flat t){
fprintf(f, "%d \n", t.number);
fprintf(f, "%g \n", t.larea);
fprintf(f, "%g \n", t.farea);
fprintf (f, "%d \n", t.peop);
fprintf (f, "%d \n", t.child);}
int put_all_into_file (Flat M[], int n){
FILE*f=fopen("18in.txt", "w");
if (f==NULL){
printf ("No file");
return -1;}
fprintf (f, "%d \n", n);
for (int i=0;i<n;i++)
put_into_file (f, M[i]);
fclose(f);
return 0;}
int show(){
int k=0;
char u[10];
puts ("Choose option 1, for see BD");
puts ("Choose option 2 for add information in BD");
puts ("Choose option 0, for exit");
scanf("%s",u);
if ((u[0]>='0')&&(u[0]<='9'))
k=atoi(u);
return k;}
int sw (Flat M[], int n, int k){
switch (k){
case 1: for (int i=0;i<n;i++)output(M[i]);
break;
case 2: {
M[n]=input();
n++;
break;}
case 0:{
printf("Finish. Exit from programm\n");
exit(0);
break;}
default:
printf ("Fail. Choose other option of menu\n");}
return n;}
int menu (Flat M[], int n){
int k=show();
while(1){
n=sw(M,n,k);
k=show();}
return n;}
int main(){
Flat M[10];
int n; int l=0;
FILE*f=fopen("18in.txt", "r");
if(f==0){
printf ("No file\n");
return 0;}
n=fill(f,M);
n=menu(M,n);
put_all_into_file(M,n);
return 0;}
Добавлено через 2 минуты
собственно изменения мои с 39 по 65строку
ForEveR
В астрале
Эксперт С++
7968 / 4730 / 320
Регистрация: 24.06.2010
Сообщений: 10,539
Завершенные тесты: 3
04.07.2010, 23:58     Составить базу данных о квартирах дома (от 6 до 12). Для каждой квартиры указать номер, жилую площадь, общую площадь, количество жильцов... #12
neon902, не... что-т сейчас я ничего не понимаю... чуть позже посмотрю как следует
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.07.2010, 18:59     Составить базу данных о квартирах дома (от 6 до 12). Для каждой квартиры указать номер, жилую площадь, общую площадь, количество жильцов...
Еще ссылки по теме:

Даны отрезки а, в, с и d. Для каждой тройки этих отрезков, из которых можно построить треугольник, напечатать площадь данного треугольника. (Определи - C++
Даны отрезки а, в, с и d. Для каждой тройки этих отрезков, из которых можно построить треугольник, напечатать площадь данного...

Дан текстовый файл с фамилиями жильцов дома - C++
Дан текстовый файл с фамилиями жильцов дома. Вывести на экран 1) фамилии, которые не повторяются 2) фамилии и число их повторений. ...

Определить площадь круга и площадь заштрихованных областей - C++
Помогите с ответом, как сделать задачу: Напишите функцию double circle_area(double R) которая узнает площадь круга, . С помощью...

Создать файл, содержащий список жильцов дома с указанием фамилии и поиском по жильцам - C++
Помогите пожалуйста!!! Нужно создать файл, содержаший список жильцов дома с указанием фамилии, места работы и года рождения. Вывести по...

Как составить формулу Sквадрата(площадь)? - C++
Хотела сделать формулу с вводом переменной S=a*a, где а можно было бы вводить вручную, не получилось...объясните в чём ошибка и помогите...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
easybudda
Эксперт С++
9456 / 5469 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
05.07.2010, 18:59     Составить базу данных о квартирах дома (от 6 до 12). Для каждой квартиры указать номер, жилую площадь, общую площадь, количество жильцов... #13
номера квартир на предмет совпадения не проверяет, да и с файлами уж сами как-нибудь
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
/*
*  Составить базу данных о квартирах дома (от 6 до 12). Для каждой квартиры указать номер,
*  жилую площадь, общую площадь, количество жильцов, количество детей. Упорядочить квартиры
*  по общей площади или по количеству жильцов или по метражу на одного жильца.
*/
 
typedef struct APARTMENT {
    int number;
    double square;
    int adults;
    int children;
} apt_t;
 
void fill_apt(apt_t * apt){
    printf("Number: ");
    scanf("%d", &(apt->number));
    printf("Square: ");
    scanf("%lf", &(apt->square));
    printf("Adults: ");
    scanf("%d", &(apt->adults));
    printf("Children: ");
    scanf("%d%*c", &(apt->children));
}
 
void print_apts(const apt_t * apts, size_t cnt){
    printf("\n#   Square  Adults  Children\n----------------------------------------\n");
    while ( cnt-- ){
        printf("%02d  %6.1f  %6d  %8d\n", apts->number, apts->square, apts->adults, apts->children);
        ++apts;
    }
    printf("----------------------------------------\n");
}
 
int by_square(const void * a, const void * b){
    return (int)((*(apt_t*)a).square * 100.0 - (*(apt_t*)b).square * 100.0);
}
 
int by_people(const void * a, const void * b){
    return ((*(apt_t*)a).adults + (*(apt_t*)a).children) - ((*(apt_t*)b).adults + (*(apt_t*)b).children);
}
 
int by_each_square(const void * a, const void * b){
    return (int)(((*(apt_t*)a).square / ((*(apt_t*)a).adults + (*(apt_t*)a).children) * 100.0) -
                 ((*(apt_t*)b).square / ((*(apt_t*)b).adults + (*(apt_t*)b).children) * 100.0));
}
 
#define LO_LIM 6
#define HI_LIM 12
 
int main(void){
    apt_t * apts;
    int cnt, i;
 
    printf("Number of apartments: ");
    scanf("%d%*c", &cnt);
    if ( cnt < LO_LIM || cnt > HI_LIM ){
        fprintf(stderr, "Out of range!\n");
        exit(EXIT_FAILURE);
    }
 
    if ( ( apts = calloc(cnt, sizeof(apt_t)) ) == NULL ){
        fprintf(stderr, "Memory error!\n");
        exit(EXIT_FAILURE);
    }
 
    for ( i = 0; i < cnt; ++i ){
        printf("\nData for apartment #%d\n", i + 1);
        fill_apt(apts + i);
    }
 
    while ( 1 ){
        printf("\nChoice one:\n1 - sort by square\n2 - sort by people\n3 - sort by s / p\n0 - exit\n> ");
        scanf("%d", &i);
        switch ( i ){
        case 1:
            qsort(apts, cnt, sizeof(apt_t), by_square);
            print_apts(apts, cnt);
            break;
        case 2:
            qsort(apts, cnt, sizeof(apt_t), by_people);
            print_apts(apts, cnt);
            break;
        case 3:
            qsort(apts, cnt, sizeof(apt_t), by_each_square);
            print_apts(apts, cnt);
            break;
        case 0:
            printf("Good bye!\n");
            free(apts);
            exit(EXIT_SUCCESS);
        default:
            printf("Unknown action.\n");
            break;
        }
    }
}
Yandex
Объявления
05.07.2010, 18:59     Составить базу данных о квартирах дома (от 6 до 12). Для каждой квартиры указать номер, жилую площадь, общую площадь, количество жильцов...
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru