Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

Показать сообщение отдельно
easybudda
Модератор
Эксперт CЭксперт С++
9728 / 5679 / 972
Регистрация: 25.07.2009
Сообщений: 10,929
05.07.2010, 18:59
номера квартир на предмет совпадения не проверяет, да и с файлами уж сами как-нибудь
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;
        }
    }
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.