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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.04.2011, 18:57   #1
Alexey_kor
Пользователь
 
Регистрация: 29.01.2011
Сообщений: 19
По умолчанию Задача на массивы и знание типов данных

Вот текст задачи:
На вход программе подаются следующие сведения: в первой строке исходных данных со-держится N – количество абитуриентов, сдавших три экзамена (русский язык, математика, физика). Далее следует N строк формата:
‹Фамилия› ‹Инициалы› ‹Оценка_русский› ‹Оценка_математика› ‹Оценка_физика›
с оценками абитуриента по 100-бальной шкале (от 0 до 100 включительно). ‹Фамилия› — строка, состоящая не более чем из 20 символов, ‹Инициалы› — строка, состоящая из 4-х символов (буква, точка, буква, точка). Необходимо найти и напечатать фамилию, инициа-лы, минимальный индивидуальный суммарный балл абитуриента и фамилию, инициалы, максимальный индивидуальный суммарный балл абитуриента.
Пример входных данных:
5
Иванов П.С. 93 45 15
Петров Ф.С. 43 77 84
Кузьмин В.С. 95 100 87
Назаров А.В. 23 0 7
Соколов М. Ю. 97 100 69
При этих исходных данных программа должна выдать:
Кузьмин В.С. 282
Назаров А.В. 30

Вот мой код:
Код:
#include<stdio.h>
#include<conio.h>
int main()
{int N, r, m, f, i, s, min=100, max=0; 
char fio_min[21], fio_max[21], name_min[5], name_max[5], fio, name;

scanf("%d",&N);
for(i=1; i<=N; i++)
{ scanf ("%s %s %d %d %d", &fio, &name, &r, &m, &f);
s=r+m+f;

if(min>s)  {min=s; fio_min=fio; name_min=name;} //тут две ошибки
if(max<s) {max=s; fio_max=fio; name_max=name;} //и тут ещё две
}
printf("\n %f %s %s", min, fio_min, name_min);
printf("\n %f %s %s", max, fio_max, name_max);
getch();
}
visual studio C++ выдает ошибку: невозможно перобразовать char в char[21](два раза) и невозможно перобразовать char в char[5] (тоже два раза)
Подскажите пожалуйста, что нужно исправить и в чем собственно тут проблема?
Alexey_kor вне форума Ответить с цитированием
Старый 08.04.2011, 19:13   #2
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

1)
&fio, &name
поменять на
fio name.

2)
fio, name
поменять на
fio[20] name[20];
3)
name_min=name;
name_max=name;
поменять на strcpy(name_min,name); strcpy(name_max,name);

задание не читал
onewho вне форума Ответить с цитированием
Старый 08.04.2011, 19:35   #3
Alexey_kor
Пользователь
 
Регистрация: 29.01.2011
Сообщений: 19
По умолчанию

to onewho,
спасибо большое) Все заработало. А можете вкратце пояснить что означают эти изменения и почему прога без них не работала? (чтобы я на будущее уяснил...)
Alexey_kor вне форума Ответить с цитированием
Старый 09.04.2011, 00:07   #4
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

1) имя массива (символов) - есть адрес, поэтому амперсанд не нужен
2) это вообще были символы из 1 буквы
3) операция = (присвоить) для строк в стиле С не определена. для копирования строк - функция strcpy()
onewho вне форума Ответить с цитированием
Старый 09.04.2011, 00:18   #5
Alexey_kor
Пользователь
 
Регистрация: 29.01.2011
Сообщений: 19
По умолчанию

Ещё раз огромное спасибо)
Alexey_kor вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Преобразование типов данных!! Dima_Dima Общие вопросы Delphi 5 01.09.2010 17:33
Преобразование типов данных !!!!!!!!!!! Dima_Dima Общие вопросы Delphi 2 01.09.2010 16:31
Несовпадение типов данных IraPr Microsoft Office Access 4 02.05.2010 13:56
Знание протокола TCP под Linux, передача данных между клиентом и FTP сервером komis Помощь студентам 0 19.04.2010 17:20
Преобразование типов данных stepchild БД в Delphi 14 19.07.2009 21:45