Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Ада и другие языки _ Подскажите, где находится ошибка в коде

Автор: Till 7.01.2009 22:42

у меня есть задание, Разработать программу, которая вводит фактические данные из таблицы.
вот задание:
Прикрепленное изображение

#include <stdio.h>
int main(void) {
char name1[9], name2[9], name3[9];
char sc1, sc2, sc3;
unsigned short cnt1, cnt2, cnt3;
float sq1, sq2, sq3;
/* Введение фактических данных*/
printf("1. Введите: Автор книги, Название, Год выпуска, Группа >");
scanf("%s",name1);
scanf("%c",&sc1);
scanf("%d",&cnt1);
scanf("%f",&sq1);
printf("2. Введите: Автор книги, Название, Год выпуска, Группа >");
scanf("%s",name2);
scanf("%c",&sc2);
scanf("%d",&cnt2);
scanf("%f",&sq2);
printf("3. Введите: Автор книги, Название, Год выпуска, Группа >");
scanf("%s",name3);
scanf("%c",&sc3);
scanf("%d",&cnt3);
scanf("%f",&sq3);
/* Вывод таблицы */
/* вывод заголовков */
printf("-----------------------------------------------\n");
printf("|Каталог библиотеки |\n");
printf("|---------------------------------------------------|\n");
printf("| Автор книги | Название | Год выпуска|Группа |\n");
printf("| | | | |\n");
printf("|-------------|----------|------------|-------------|\n");
/* вывод строк фактических данных */
printf("| %9s | %c | %3d | %-5.1f |\n", name1, sc1, cnt1, sq1);
printf("| %9s | %c | %3d | %-5.1f |\n", name2, sc2, cnt2, sq2);
printf("| %9s | %c | %3d | %-5.1f |\n", name3, sc3, cnt3, sq3);
/* вывод примечаний */
printf("|---------------------------------------------|\n");
printf("| Примечание: Х - художественная литература; |\n");
printf("| У - учебная литература; |\n");
printf("| С - справочная литература |\n");
printf("-----------------------------------------------\n");
return 0;
}

Автор: volvo 8.01.2009 0:26

Цитата
Помогите найти ошибку
Ошибку в чем? Программа компилируется прекрасно. Как обрабатывает введенные данные - не знаю, потому что
1) не знаю, что программа должна делать (Задание где? Что вводить надо? Почему под "название" выделяется только один символ? Мне это непонятно...)
2) не знаю, что ты вводишь.

Итого, наблюдаю только 2 твои ошибки:
1) название темы, за которое она в принципе может быть и закрыта, а отвечать просто так - не хочется. Приведи топик в порядок, получишь более развернутый ответ;
2) неиспользование тегов CODE, что приведет к аналогичному результату...

Автор: Till 8.01.2009 0:36

ой извените, забыл самое главное из-за этой мороки вот задание

Каталог библиотеки

Автор книги Название Год выпуска Группа

Сенкевич Потоп 1978 Х
Ландау Механика 1989 У
Дойль Сумчатые 1990 C

Примечание: Х - художественная литература;
У - учебная литература; С - справочная литература

1. Введите: Автор книги, Название, Год выпуска, Группа > Сенкевич Потоп 1978 Х
2. Введите: Автор книги, Название, Год выпуска, Группа > Ландау Механика 1989 У
3. Введите: Автор книги, Название, Год выпуска, Группа > Дойль Сумчатые 1990 C

И дложна получится таблица с этими данными, но чтот она не получается, в итоге данные не вписываются в таблицу

Автор: Account 8.01.2009 0:43

А указанная volvo ошибка случаем не влияет? (имею ввиду название в один символ)
Измени название на размерность как у автора и попробуй?

Автор: Lapp 8.01.2009 0:48

М
Срочно приведи тему в соответствие с Правилами (пп. 4 и 5)


Автор: Till 8.01.2009 0:57

усё, я зделал как надо

Автор: Lapp 8.01.2009 1:03

Цитата(Till @ 7.01.2009 20:57) *
усё, я зделал как надо
Ты смеешься?
Информативность подразумевает информацию о ЗАДАЧЕ. Коротко опиши задачу. Например: реализация каталога.

Автор: volvo 8.01.2009 1:20

Till, смотри, что ты вводишь:
Сенкевич Потоп 1978 Х

и что читаешь:

 scanf("%s",name1); // строку
scanf("%c",&sc1); // символ
scanf("%d",&cnt1); // целое число (int, а не unsigned, кстати !!!)
scanf("%f",&sq1); // вещественное число
Тебе не кажется, что и читать надо то, что вводится, по крайней мере в том порядке, в котором данные ДОЛЖНЫ следовать? Читай ДВЕ строки, потом одно целое, и один символ...

Автор: Till 8.01.2009 2:26

Цитата(volvo @ 7.01.2009 20:20) *

Till, смотри, что ты вводишь:
Сенкевич Потоп 1978 Х

и что читаешь:
 scanf("%s",name1); // строку
scanf("%c",&sc1); // символ
scanf("%d",&cnt1); // целое число (int, а не unsigned, кстати !!!)
scanf("%f",&sq1); // вещественное число
Тебе не кажется, что и читать надо то, что вводится, по крайней мере в том порядке, в котором данные ДОЛЖНЫ следовать? Читай ДВЕ строки, потом одно целое, и один символ...

спасибо, всё получилось, я действительно не туда посмотрел... good.gif