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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ битовые сдвиги http://www.cyberforum.ru/cpp-beginners/thread150955.html
как с помощью битовых сдвигов передвинуть разряды в шестнадцатеричном числе?
C++ Динамические Списки!!!! Очень нужно...! Помогите пожалуйста решить задачи на Си....горит стипендия(( Задача 1. Описать функцию, которая за каждым отрицательным элементом очереди вставляет элемент, содержащий его значение по модулю. Задача 2. Описать функцию, которая подсчитывает количество элементов дека начинающихся с одной и той же буквы. Результатом является последовательность букв и соответствующее количество слов. Для... http://www.cyberforum.ru/cpp-beginners/thread150949.html
C++ Дан массив из 9 целых чисел. Найти сумму элементов массива и, если она четная, вывести сообщение "Сумма четная", в противном случае напечатать "Сумма
Дан массив из 9 целых чисел. Найти сумму элементов массива и, если она четная, вывести сообщение "Сумма четная", в противном случае напечатать "Сумма нечетная". Операции с элементами массива осуществлять при помощи нотации индексов. спс заранее
Числа-близнецы C++
1)Дано натуральное число n. Выяснить, имеются ли среди чисел n, n+1, ..., 2n близнецы, т.е. простые числа , разность между которыми равна двум. (Определить процедуру, позволяющую распознавать простые числа). 2)Дана действительная квадратная матрица порядка n. Найти наибольшее из значений элементов, расположенных в заштрихованной части матрицы (рис Е) Помогиет бедному...
C++ Вопрос про чтение из файла http://www.cyberforum.ru/cpp-beginners/thread150930.html
Дали в колледже курсовую на тему создания ежедневного, почасового расписания(запись дел в определенное время) для 5 бригад. Задание сделал там же в аудитории, на что преподаватель усложнил, мол все эти таблицы с данными должны записываться в .тхт файл, и считываться оттуда же при входе в программу, либо при вводе определенного значения\пункта меню в консоли. Запись сделал, а вот со считыванием...
C++ Найти первые k Найти первые k членов последовательности, если последовательность образована по закону:A1=x , An=... подробнее

Показать сообщение отдельно
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9382 / 5432 / 916
Регистрация: 25.07.2009
Сообщений: 10,428
05.07.2010, 18:59     Составить базу данных о квартирах дома (от 6 до 12). Для каждой квартиры указать номер, жилую площадь, общую площадь, количество жильцов...
номера квартир на предмет совпадения не проверяет, да и с файлами уж сами как-нибудь
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;
        }
    }
}
 
Текущее время: 19:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru