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

Создание и обработка файлов в С - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Построение пустого кольца http://www.cyberforum.ru/cpp-beginners/thread71611.html
Разработать программу работы с односвязным кольцом. Программа должна содержать следующие процедуры, вызываемые из меню: - построение пустого кольца; - добавление нового элемента; - удаление...
C++ алгоритм построения всех способов представления целого числа М в виде суммы чисел Всем привет! кто может такое написать ?? Составить алгоритм построения всех способов представления целого числа М в виде суммы чисел из заданного набора f1,...,fn причем эти числа НЕ... http://www.cyberforum.ru/cpp-beginners/thread71610.html
Разработка и отладка алгоритмов и программ с использованием указателей C++
Помогите пожалуйста... Программа должна содержать систему меню (пункты 1,2 – вызывают выполнение соответствующих заданий, 3 – окончание работы программы). При написании программы все пункты...
C++ Перемножыть матрицы 2*3 и 3*2, в итоге должна быть матрица 3*3, здесь и трудность
#include <cstdlib> #include <iostream> using namespace std; int main(int argc, char *argv) { int i,j,k,l; int a={{1,2,3},{4,2,1}}, b={{1,0},{2,1},{3,5}},c; for (i=0; i<2; i++)
C++ ДВУСВЯЗНЫЕ СПИСКИ!!! http://www.cyberforum.ru/cpp-beginners/thread71572.html
Доброго времени суток... покажите пожалуйста примеры на организацию двусвязных списков, их удаление, редактирование, поиск нужного элемента и вывод всех данных связанных с этим элементом... а то я...
C++ Шаблоны!!!Просьба Бедного Студента!!! Вот делал шаблоны...но при выполнении задачи выдает не правильный результат...не пойму в чем причина((((Плизз!!!!Помогите!!! #include<iostream> #define n 10 using namespace std; template... подробнее

Показать сообщение отдельно
easybudda
Модератор
Эксперт CЭксперт С++
9632 / 5580 / 948
Регистрация: 25.07.2009
Сообщений: 10,714
09.12.2009, 00:00
Вот
на С
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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
#define STR_LEN 255
 
typedef struct {
    char name[STR_LEN];
    int number;
    int age;
    int growth;
    int weight;
} Person_t;
 
/* заполняет структуру, возвращает указатель на неё, если удачно, NULL, если нет */
Person_t *newPerson(){
    Person_t* p;
    char *c;
    
    if ( (p = (Person_t*)malloc(sizeof(Person_t))) == NULL ){
        perror("Memory error!\n");
        exit(1);
    }
    
    printf("Name: ");
    if ( !fgets(p->name, STR_LEN, stdin) ){
        free(p);
        return NULL;
    }
    if ( c = strrchr(p->name, '\n') )
        *c = '\0';
    printf("Number: ");
    if ( scanf("%d%*c", &p->number) != 1 ){
        free(p);
        return NULL;
    }
    printf("Age (years): ");
    if ( scanf("%d%*c", &p->age) != 1 ){
        free(p);
        return NULL;
    }
    printf("Growth (cm): ");
    if ( scanf("%d%*c", &p->growth) != 1 ){
        free(p);
        return NULL;
    }
    printf("Weight (kg): ");
    if ( scanf("%d%*c", &p->weight) != 1 ){
        free(p);
        return NULL;
    }
    
    return p;
}
 
/* функция для сравнения по возрасту */
int byAgeAsc(const void *a, const void *b){
    return (*(Person_t**)a)->age - (*(Person_t**)b)->age;
}
 
int main(void){
    Person_t **persons = NULL, *pp = NULL, *pmax = NULL;
    size_t count = 0, i;
    int stop = 0, max_growth, action;
    
    while ( !stop ){
        printf("\nSportsmens in base: %d\n", count);
        printf("1 - add a new one; 2 - show all; 3 - find the youngest and tall; 0 - quit\n> ");
        scanf("%d%*c", &action);
        switch ( action ){
            case 1 :
                if ( (pp = newPerson()) == NULL ){
                    printf("Bad data for new person!\n");
                    break;
                }
                if ( (persons = (Person_t**)realloc(persons, sizeof(Person_t*) * (count + 1))) == NULL ){
                    perror("Memory error!\n");
                    exit(1);
                }
                persons[count++] = pp;
                break;
            case 2 :
                if ( !count ){
                    printf("No sportsmens in base!\n");
                    break;
                }
                printf("Name                     Number  Age     Growth  Weight\n-------------------------------------------------------\n");
                for ( i = 0; i < count; i++ )
                    printf("%-25s%-8d%-8d%-8d%-8d\n", (persons[i])->name, (persons[i])->number, (persons[i])->age, (persons[i])->growth, (persons[i])->weight);
                printf("-------------------------------------------------------\n\n");
                break;
            case 3 :
                if ( !count ){
                    printf("No sportsmens in base!\n");
                    break;
                }
                qsort((void*)persons, count, sizeof(Person_t*), byAgeAsc);
                pmax = *persons;
                max_growth = pmax->growth;
                for ( i = 1; i < count; i++ ){
                    if ( (persons[i])->growth > max_growth ){
                        pmax = persons[i];
                        max_growth = (persons[i])->growth;
                    }
                }
                printf("\nThe youngest and long is:\n");
                printf("Name                     Number  Age     Growth  Weight\n-------------------------------------------------------\n");
                printf("%-25s%-8d%-8d%-8d%-8d\n", pmax->name, pmax->number, pmax->age, pmax->growth, pmax->weight);
                printf("-------------------------------------------------------\n\n");
                break;
            case 0 :
                stop = 1;
                break;
            default :
                printf("Wrong command!\n");
                break;
        }
    }
        
    if ( persons ){
        for ( i = 0; i < count; i++ ){
            if ( persons[i] ){
                free(persons[i]);
                persons[i] = NULL;
            }
        }
        free(persons);
        persons = NULL;
    }
    
    exit(0);
}
. Два момента есть: во-первых если самый древний - он же самый длинный, его же програмка и покажет; а второе - после поиска список отсортирован по возрасту.
Создание и обработка файлов в С
Кстати, а файлы-то тут каким боком?
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru