Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.06.2009, 18:11   #1
Angelholy
Пользователь
 
Аватар для Angelholy
 
Регистрация: 22.03.2009
Сообщений: 22
По умолчанию Блок схема.

Помогите нарисовать блок схему к этой проге
Код:
#include <stdio.h>
#include <iostream.h>
#include <conio.h>

struct student // Шаблон структуры
{ char name[20]; // имя
char fam[30]; // фамилия
int year; // возраст
int mark[5]; // оценки
int average; // Сумма балов

};
student students[30]; // Массив данных по группе
student buffer; // Дополнительная структура
int records; // Количество студентов в группе
int i, j ;
student mass[30]; // Вспомогательные переменные
void main ( )
{ records = 0 ; // Сначала записей нет
do // Заполняем массив структур
{ cout << "Студент № " << records+1 << endl;
cout << "Введите фамилию "; fflush(stdin) ;
cin >> students [records].fam;
cout << "Введите имя ";
cin >> students [records].name;
cout << "Введите возраст ";
cin >> students [records].year;
for(i = 0; i < 5; i++)
{ cout << " Введите оценку по экзамену № " << i+1 << endl;
cin >> students[records].mark[i];
}
records++;
cout << "Остановить работу? [1/0] ";
cin >> i;
} while(i) ;
for(i = 0; i < records; i++) // Подсчитывает сумму баллов
{ students [ i ].average = 0;
for (j=0; j < 5; j++)
students[i].average += students[i].mark[j ];
}
for (i = 0; i < records-1; i++) // сортирует
for (j = i; j < records; j++) // по сумме баллов
if (students[i].average > students[j].average)
{ buffer = mass[i]; // Перестановка элементов
mass[i] = mass[j]; // структуры, особенность
mass[j] = buffer; // языка C/C++
}
for (i = 0; i < records; i++) // Выводим результат
{ cout << "\n Студент " << students[i].name << "\t" << students [i].fam ;
cout << " возраст " << students [i].year;
cout << " Сре. бал " << students[i].average;
}
}
Я не понимаю как это сделать с структурами =( Вопрос жизни и смерти!!!!!!!!.
Angelholy вне форума Ответить с цитированием
Старый 19.06.2009, 18:48   #2
Geremy
Пользователь
 
Аватар для Geremy
 
Регистрация: 31.05.2009
Сообщений: 16
По умолчанию

что именно не понятно?
программа вроде работает если поправить
Код:
void main ( )
на
Код:
int main()
Geremy вне форума Ответить с цитированием
Старый 19.06.2009, 19:07   #3
Angelholy
Пользователь
 
Аватар для Angelholy
 
Регистрация: 22.03.2009
Сообщений: 22
По умолчанию

Да понимаешь нужно блок-схему или в коде исправить так чтоб она считала ср.бал ,а она не считает его. Она ток суммирует.( и то криво).Вот нужно или блок схему(без гостов,просто обычную) или вот куда воткнуть деление кол-во оценок чтоб делилось на на 5???? Что то из этого.В этом касяк.
Angelholy вне форума Ответить с цитированием
Старый 19.06.2009, 19:31   #4
Geremy
Пользователь
 
Аватар для Geremy
 
Регистрация: 31.05.2009
Сообщений: 16
По умолчанию

Можно задать условие:
Если сумма оценок <=17 и >=15 то средний балл 3
Если сумма оценок <=22 и >=18 то средний балл 4
Если сумма оценок <=25 и >=23 то средний балл 5

Код:
...
if(students[i].average>=15 && students[i].average<=17)printf("средний балл 3");
if(students[i].average>=18 && students[i].average<=22)printf("средний балл 4");
if(students[i].average>=23 && students[i].average<=25)printf("средний балл 5");
...

Последний раз редактировалось Geremy; 19.06.2009 в 19:36.
Geremy вне форума Ответить с цитированием
Старый 19.06.2009, 22:53   #5
Geremy
Пользователь
 
Аватар для Geremy
 
Регистрация: 31.05.2009
Сообщений: 16
По умолчанию

Цитата:
Вот нужно или блок схему(без гостов,просто обычную) или вот куда воткнуть деление кол-во оценок чтоб делилось на на 5???? Что то из этого.В этом касяк.
Воткнуть можно после вывода результатов
Код:
...
for (i = 0; i < records; i++) // Выводим результат
{ cout << "\n Студент " << students[i].name << "\t" << students [i].fam ;
cout << " возраст " << students [i].year;
cout << " Сре. бал " << students[i].average;
}
if(students[i].average>=15 && students[i].average<=17)printf("средний балл 3");
if(students[i].average>=18 && students[i].average<=22)printf("средний балл 4");
if(students[i].average>=23 && students[i].average<=25)printf("средний балл 5");
...
Geremy вне форума Ответить с цитированием
Старый 20.06.2009, 13:38   #6
Angelholy
Пользователь
 
Аватар для Angelholy
 
Регистрация: 22.03.2009
Сообщений: 22
По умолчанию

Ок воткну, посморю мб примет препод.
Angelholy вне форума Ответить с цитированием
Старый 20.06.2009, 15:14   #7
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

Н-да... Geremy, если б мне с таким подсчетом среднего балла студент принес программу, ему пришлось бы идти в армию...
Код:
for (i = 0; i < records; i++) // Выводим результат
{ cout << "\n Студент " << students[i].name << "\t" << students [i].fam ;
cout << " возраст " << students [i].year;
cout << " Средний балл " << students[i].average/5.0;
}
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 20.06.2009, 16:55   #8
Geremy
Пользователь
 
Аватар для Geremy
 
Регистрация: 31.05.2009
Сообщений: 16
По умолчанию

деление на 5 не помогло, я проверял на компиляторе считало не правильно средний балл. А что вам не нравится в моем подсчете среднего балла?

Последний раз редактировалось Geremy; 20.06.2009 в 16:57.
Geremy вне форума Ответить с цитированием
Старый 21.06.2009, 00:43   #9
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

Код:
if(students[i].average>=15 && students[i].average<=17)printf("средний балл 3");
Вот это не нравится. Мне кажется, это очень похоже на способ через ...опу, простите. А если баллов будет 100? Для всех ста будете if'ы писать? Или предметов будет не 5, а, скажем 6 или 10 или 3.

Цитата:
Сообщение от Geremy Посмотреть сообщение
деление на 5 не помогло, я проверял на компиляторе считало не правильно средний балл.
Э... ввожу такие данные 5 4 3 4 5. Выдает средний балл 4.2. Проверяю на калькуляторе - все правильно. Считаю вручную - все правильно.
В чем ошибка? Приведите свой пример.
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать

Последний раз редактировалось ACE Valery; 21.06.2009 в 00:51.
ACE Valery вне форума Ответить с цитированием
Старый 21.06.2009, 11:35   #10
Geremy
Пользователь
 
Аватар для Geremy
 
Регистрация: 31.05.2009
Сообщений: 16
По умолчанию

Цитата:
Э... ввожу такие данные 5 4 3 4 5. Выдает средний балл 4.2. Проверяю на калькуляторе - все правильно. Считаю вручную - все правильно.
В чем ошибка? Приведите свой пример.
Я на самом деле делил не так:
Код:
cout << " Средний балл " << students[i].average/5.0;
а так :
Код:
cout << " Средний балл " << students[i].average/5;
может быть поэтому не получилось и пришлось думать конструкцию с if'ами =)
Geremy вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц