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

Составить файл об информаций студентов в группе. Найти самый высокий и самый низкий уровень успеваемости студентов в группе - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Нарисовать графы http://www.cyberforum.ru/cpp-beginners/thread1018981.html
Всем привет. Ребят, очень нуждаюсь в помощи по задачке. Задали, а я что-то никак не могу сообразить, как такое можно провернуть. Наметки есть, но как прикрутить к этому графику... В общем: Пользователь вводит с клавиатуры количество вершин графа. (не больше 20) Программа рандомно расставляет их и соединяет, при условии, что ни одно ребро не должно пересекаться с другими (без пересечений...
C++ найти длину слова Создать символьный файл f. Найти и вывести самое длинное слово, и подсчитать в нем количество букв. Если их несколько, то вывести все слова. Не получается вывести не сколько слов. #include <iostream> #include <cstring> #include <fstream> using namespace std; int main() {setlocale(LC_ALL, ".1251"); http://www.cyberforum.ru/cpp-beginners/thread1018980.html
C++ ifstream записать число из файла
Всем здрасьте. У меня вопросом по чтению файлов. Допустим есть у меня файл и я хочу записать содержимое , например это будет число. Код я приводил условно , ошибками пренебречь : #include <fstream> using namespace std; int main() {
C++ Curl опция переменной
Собственно передача опции курлу выглядит незамысловато: curl_easy_setopt(CURL *handle, CURLoption option, parameter); Необходимо задать "option" переменной. Т.е. я не знаю заранее какой будет опция и параметр. Но как его задать? Литералы, стринги, чары кушать не хотим, приведение типов тоже не оценило попытки. Что есть тип CURLoption разобраться не получилось. Вроде идет перечисление, но, что...
C++ С++. Перегрузка http://www.cyberforum.ru/cpp-beginners/thread1018951.html
Нужна помощь! Буду рада любым идеям! Надо написать программу, которая перегружает операцию «меньше чем» (<) в классе Distance для того, чтобы иметь возможность сравнивать объекты этого класса, и операцию умножения в классе Distance. Вот что у меня есть, только я не уверенна в правильности class Distance // класс английских мер длины { private:
C++ Как вычислит общий делитель для двух целых десятичных чисел?? Как вычислит общий делитель для двух целых десятичных чисел?? подробнее

Показать сообщение отдельно
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4927 / 2670 / 243
Регистрация: 29.11.2010
Сообщений: 7,429
25.11.2013, 22:32     Составить файл об информаций студентов в группе. Найти самый высокий и самый низкий уровень успеваемости студентов в группе
cre, а какой будет толк от того, что за вас все сделают, а вы потом также весь семестр ничего делать не будете, уповая на халяву?
Вот вам пример реализации работы со структурами на С. Все подробно откомментировано.
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
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <locale.h>
#include <ctype.h>
#define SIZE 50        /* размер строк */
#define RESORTS_MAX 20 /* максимальное количество записей */
#define KEY 1          /* наш ключ для шифрования */
#define ALF_SIZE 26    /* размер алфавита */
 
 
/* вспомогательная функция шифрования строки */
void encode(char *);
 
/* объявляем структуру и создаем синоним, чтобы не писать каждый раз struct */
typedef struct 
{
    char name[SIZE];    /* название  */
    char country[SIZE]; /* страна    */
    int cost;           /* стоимость */
} Resort;
 
/* <<<------- объявляем прототипы функций для работы со структурой ------->>> */
void init(Resort *);         /* инициализация структуры  */
void print(const Resort *);  /* вывод структуры на экран */
                             /* считывание с файла структурной переменной */
void readFromFile(Resort *, FILE *);
 
/* <<<---- объявляем прототипы функций для работы с массивом структур ---->>> */
/* вывод всех структур на экран */
void printAll(const Resort *, const int size);
/* поиск по названию */
int findByName(const Resort *, const int size, const char *key);
/* поиск по стоимости меньшей, не превышающей заданную */
int findLessCount(const Resort *, const int size, const int cost);
/* записать зашифрованные данные в файл */
void writeEncoded(const Resort *, const int size, FILE *);
 
 
/******************************************************************************/
/* <<<<<<<<<<------------------ главная функция ------------------->>>>>>>>>> */
/******************************************************************************/
int main(void)
{
    Resort r[RESORTS_MAX]; /* объявляем массив структурных переменных */
    int size = 0;          /* количество курортов */
    char choise; /* переменная выбора в меню */
    FILE *fp = fopen("resorts.txt", "r"); /* открываем файл для чтения */
    
    setlocale(LC_ALL, ""); /* добавляем возможность работать с кириллицей */    
    if (!fp)               /* если файл не найден */
    {
        printf("Невозможно найти файл \"resorts.txt\"\n");
        _getch(); /* пауза */
        return 1; /* возвращаем код ошибки */
    }   
    /* пока не конец файла и массив не полон */
    while (!feof(fp) && size < RESORTS_MAX)
    {
        /* считываем в очередной элемент массива, увеличиваем счетчик числа 
           структур на один */
        readFromFile(&r[size++], fp);
    }
    
    do
    {
        system("cls"); /* очистка экрана */
        /* вывод меню */
        printf("Что желаете сделать:\n");
        printf("1. Записать зашифрованный текст в файл\n");
        printf("2. Вывести все записи\n");
        printf("3. Добавить запись\n");
        printf("4. Найти запись по названию курорта\n");
        printf("5. Вывести курорты не превосходящии по стоимости сумму\n");
        printf("0. Выход\n");
        printf("Ваш выбор: ");
        
        choise = _getch(); /* считываем выбор */        
        
        /* оператор множественного выбора принимает choise как число */
        switch (choise - '0')
        {
            case 1 :
            {
                /* открываем файл для записи */
                FILE *fout = fopen("encode.txt", "w"); 
                /* записываем зашифрованные данные */
                writeEncoded(r, size, fout);
                /* закрываем файл */
                fclose(fout);
                /* выводим информационное сообщение о количестве записанных */
                /* переменных */
                printf("\nЗаписано %d переменных\n", size);
                _getch(); /* пауза */
                break;
            }
            
            case 2 :
                printAll(r, size);
                break;
            
            case 3 :
                if (size < RESORTS_MAX)  /* если есть свободное место */
                    init(&r[size++]);    /* вызываем функцию инициализации
                                           и увеличиваем кол-во элементов */
                else                     /* иначе */
                {
                                         /* выводим сообщение об ошибке */
                    printf("\a\nМассив заполнен"); 
                    _getch();            /* пауза */
                }
                break;
            
            case 4 :
            {
                char name[50];
                printf("\nВведите название курорта: ");
                scanf("%s", name); /* считываем название */
                /* вызываем функцию поиска. если она вернула ложь (0) */
                if (!findByName(r, size, name))
                {
                    /* выводим сообщение о безрезультатном поиске */
                    printf("\nПо вашему запросу ничего не найдено"); 
                    _getch(); /* пауза */
                }
                break;
            }
            
            case 5 :
            {
                int cost;
                printf("\nВведите стоимость: ");
                scanf("%d", &cost); /* считываем стоимость */
                /* вызываем функцию поиска. если она вернула ложь (0) */
                if (!findLessCount(r, size, cost))
                {
                    /* выводим сообщение о безрезультатном поиске */
                    printf("\nПо вашему запросу ничего не найдено"); 
                    _getch(); /* пауза */
                }
                break;
            }
            
            case 0 :
                break;
            
            default :
                printf("\a\nНеверный выбор"); /* выводим сообщение об ошибке */
                _getch(); /* пауза */
                break;
        } /* конец тела switch(choise - '0') */             
    } while (choise != '0'); /* пока не выбрали выход */
 
    fclose(fp); /* закрываем файл */
    return 0;   /* завершилось без проблем */
}
 
/* всопогательная функция шифрования строки. Принимает в качестве параметра
строку и шифрует её */
void encode(char *str)
{
    unsigned int i; /* параметр цикла */
    for (i=0; i < strlen(str); i++)
    {
        if (!isalpha(str[i])) /* если не является буквой */
            continue;   /* пропускаем тело цикла и переходим к след. итерации */
        str[i] -= 'a';       /* чтобы начать с нуля (убираем сдвиг в ASCII) */
        str[i] += KEY;       /* добавляем ключ шифрования */
        str[i] %= ALF_SIZE;  /* равно остатку от деления на мощность алфавита */
        str[i] += 'a';       /* возвращаем место назад */
    }
}
 
/* <<<<<<<------- реализация функций для работы со структурой -------->>>>>>> */
/* функция инициализации структуры. Принимает указатель на структурную
переменную. Запрашивает у пользователя информацию и заполняет поля структуры */
void init(Resort *r)
{
    system("cls"); /* очистка экрана */
    printf("Введите название курорта: "); /* информационное сообщение */
    scanf("%s", r->name);                 /* заполнение полей по указателю */
    printf("Введите страну: ");
    scanf("%s", r->country);
    printf("Введите стоимость: ");
    scanf("%d", &r->cost);
}
 
/* функция вывода полей структуры на экран. Принимает указатель на константную
(read-only) структурную переменную типа Resort. Выводит поля на экран */
void print(const Resort *r)
{
    printf("Название курорта: %s\n", r->name);                
    printf("Страна: %s\n",           r->country);
    printf("Стоимость: %d\n\n",      r->cost);
}
 
/* функция считывания структуры с файла. Принимает в качестве параметров
указатель на структурную переменную и указатель на файловую переменную.
Инициализирует поля структурной переменной данными из файла */
void readFromFile(Resort *r, FILE *fp)
{
    fscanf(fp, "%s", r->name);
    fscanf(fp, "%s", r->country);
    fscanf(fp, "%d", &r->cost);
}
 
 
/* <<<<<<----- реализация функций для работы с массивом структур ------>>>>>> */
/* функция вывода всех структур на экран. Принимает указатель на константный
(read-only) массив структурных переменных, его размер. */
void printAll(const Resort *arr, const int size)
{
    int i;                   /* параметр цикла */
    system("cls");           /* очистка экрана */
    for (i=0; i < size; i++) /* адрес каждого элемента массива */
        print(&arr[i]);      /* передаем в функцию print */
    
    printf("Назад");
    _getch();                /* пауза */
}
 
/* функция поиска структурных переменных по названию. Принимает в качестве
параметров указатель на константный массив структурных переменных, размер
массива, слово, являющееся ключом поиска. Выводит переменные, соответствующие
поиску. В случае, если ни одна не была найдена, возвращает 0 (ложь) */
int findByName(const Resort *arr, const int size, const char *key)
{
    int finded = 0; /* флаг, означающий нашли ли структурную переменную */
    int i;          /* параметр цикла */
    for (i=0; i < size; i++) /* если у какого либо элемента массива */
        if (strcmp(arr[i].name, key) == 0) /* поле name совпало с ключом */
        {
            if (!finded) /* если до этого ни одного не было найдено */
            {
                finded = 1;    /* устанавливаем флаг в истину */
                system("cls"); /* очищаем экран */
                printf("Результат:\n");
            }
            print(&arr[i]); /* вызываем функцию вывода структурной переменной */
        }
    
    if (finded) /* если нашли хоть одну запись */
    {
        printf("Назад");
        _getch();
    }
    return finded; /* возвращаем флаг поиска */
}
 
/* функция поиска структурных переменных по стоимости, не превышающей заданную.
Принимает в качестве параметров указатель на константный массив структурных
переменных, размер массива, целочисленную переменную - порог. Выводит
переменные, соответствующие поиску. В случае, если ни одна не была найдена,
возвращает 0 (ложь) */
int findLessCount(const Resort *arr, const int size, const int cost)
{
    int finded = 0; /* флаг, означающий нашли ли структурную переменную */
    int i;          /* параметр цикла */
    for (i=0; i < size; i++) /* если у какого либо элемента массива */
        if (arr[i].cost <= cost) /* поле суммы оказалось меньше либо равно */
        {
            if (!finded) /* если до этого ни одного не было найдено */
            {
                finded = 1;    /* устанавливаем флаг в истину */
                system("cls"); /* очищаем экран */
                printf("Результат:\n");
            }
            print(&arr[i]); /* вызываем функцию вывода структурной переменной */
        }
    
    if (finded) /* если нашли хоть одну запись */
    {
        printf("Назад");
        _getch();
    }
    return finded; /* возвращаем флаг поиска */
}
 
/* функция записывает зашифрованные данные в файл. Принимает в качестве
параметров указатель на константный массив структурных переменных, размер массива,*/
void writeEncoded(const Resort *arr, const int size, FILE *fp)
{
    int i;                   /* параметр цикла */   
    for (i=0; i < size; i++) /* шифруем и записываем каждый элемент массива */
    {
        /* создаем временные переменные для создания копий для шифрования */
        char name[SIZE], country[SIZE];
        /* копируем в них данные */
        strcpy(name, arr[i].name);
        strcpy(country, arr[i].country);
        /* шифруем полученные имя и страну и записываем их в файл */
        encode(name);
        encode(country);
        fprintf(fp, "%s ", name);
        fprintf(fp, "%s ", country);
        /* поле стоимость записываем без шифрования */
        fprintf(fp, "%d\n", arr[i].cost); 
    }
}
 
Текущее время: 06:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru