IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Таблица, Помогите доделать таблицу
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 8
Пол: Мужской
Реальное имя: Дима

Репутация: -  0  +


Нужно чтобы при запуске программы выводилось следующие:
1) напишите кол-во студентов
2) напишите кол-во предметов
3) напишите имя первого ученика, потом второго и т.д.
4) напишите название первого предмета, второго и т.д.
5) напишите оценку первого ученика по первому предмету, второго ученика по первому предмету и т.д. и потом 1-го уч-ка по второму предмету и т.д.
6) и чтоб после этого появилась таблица с средним баллом учеников.
Я пытался сделать, но у меня немного не получилось:

Program ifit;
uses crt;
var sub:array[1...3] of string;
grades:array[1..3,1..3] of byte;
i,j,q:integer;
s:string;
begin
ClrScr;
for i:=1 to 3 do
begin
write<'kakoy predmet?'>;
readln<sub[i]>;
for j:=1 to 3 do
begin
repeat
write<'Student',j,' ocenka: '>;
readln<s>;
val<s,grades[i,j],q>;
if q <> 0 then writeln<'eto chislo'>;
until q=0
end;
end;
writeln;
wreteln<'predmet || student 1 || student 2 || student 3 || sredniy ball'>;
for i:=1 to 3 do
writeln<sub[i],' ',grades[i,1],' ',grades[i,2]
, ',grades[i,3],' ',
<grades[i,1]+grades[i,2]+grades[i,3]>/3:1:1>;
writeln<' Sredniy. bal ',<grades[1,1]+grades[2,1]+grades[3,1]>/3:1:1,' ',
<grades[1,2]+grades[2,2]+grades[3,2]>/3:1:1,' ',
<grades[1,3]+grades[2,3]+grades[3,3]>/3:1:1>;

end.


Сообщение отредактировано: Lapp -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Я просто причесал твою прогу не вникая (и исправил < и > на ( и ) )
Кто-то может поможет по сути..
Program ifit;
uses
crt;
var
sub:array[1..3] of string;
grades:array[1..3,1..3] of byte;
i,j,q:integer;
s:string;

begin
ClrScr;
for i:=1 to 3 do
begin
write('kakoy predmet?');
readln(sub[i]);
for j:=1 to 3 do
begin
repeat
write('Student',j,' ocenka: ');
readln(s);
val(s,grades[i,j],q);
if q <> 0 then writeln('eto chislo');
until q=0
end;
end;
writeln;
writeln('predmet || student 1 || student 2 || student 3 || sredniy ball');
for i:=1 to 3 do
writeln(sub[i],' ',grades[i,1],' ',grades[i,2]
,' ',grades[i,3],' ',
(grades[i,1]+grades[i,2]+grades[i,3])/3:1:1);
writeln(' Sredniy. bal ',(grades[1,1]+grades[2,1]+grades[3,1])/3:1:1,' ',
(grades[1,2]+grades[2,2]+grades[3,2])/3:1:1,' ',
(grades[1,3]+grades[2,3]+grades[3,3])/3:1:1);
end.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


Немного по поводу вывода таблицы:

Вместо
writeln(sub[i],' '
Лучше напиши
writeln(sub[i]:20,...

Опять же, вместо
(grades[1,3]+grades[2,3]+grades[3,3])/3:1:1
Лучше написать :20:1, чтобы выровнять ширину.


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Camaro, количество предметов и студентов должно вводиться (по условию), а у тебя оно зашито намертво. Надо подходить более гибко. Если хочешь использовать простые массивы, то нужно завести их с запасом. Если можно использовать динамическую память - нужно это делать. При вводе/обработке/выводе - использовать циклы. И нигде явно не использовать числа, кроме как при задании констант.

Ты готов к этому? Могу показать начальные приемы.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5





Группа: Пользователи
Сообщений: 8
Пол: Мужской
Реальное имя: Дима

Репутация: -  0  +


в паскале плохо разбираюсь, но можно попробовать. Значит я облажался с самого начала...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(Camaro @ 16.12.2010 1:16) *
я облажался с самого начала...
Ты облажался, что не пришел сюда раньше )).
Ладно, давай решать.
У тебя есть вполне рациональные моменты в проге. Например, массив имен. Только его надо увеличить (хотя использовать его будешь не полностью. И еще надо сделать аналогичный массив предметов.
const
MaxSubj=10;
MaxStud=100;

var
Subj: array [1..MaxSubj] of String;
Stud: array [1..MaxStud] of String;
Grad: array [1..MaxSubj,1..MaxStud] of byte;
nSubj,nStud: integer;

Ввод имен и предметов веди до пустой строки:
  WriteLn('Введите предметы, по одному на строке.  Закончите пустой строкой.');
nSubj:=0;
repeat
ReadLn(s);
if s<>'' then begin
Inc(nSubj);
Subj[nSubj]:=s
end
until s='';

То же самое для имен.
ПОтом ввод оценок:
  for i:=1 to nStud do begin
WriteLn('Введите оценки студента ',Stud[i]);
for j:=1 to nSubj do begin
Write(Subj[j]',': ');
ReadLn(Grad[j,i])
end
end;

Потом приходи и показывай.
Организовать вывод таблицы уже совсем просто.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7





Группа: Пользователи
Сообщений: 8
Пол: Мужской
Реальное имя: Дима

Репутация: -  0  +


Блин я совсем нуб... Попытался ввести как ты написал, но я походу немного не разобрался куда всё это писать или что... в общем не получается ни фига(((
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(Camaro @ 19.12.2010 10:14) *
я походу немного не разобрался куда всё это писать или что... в общем не получается ни фига(((

Ты хоть что-то пробовал? хоть раз?
я имею в виду кроме перепечатывания моего мессаджа на другой форум (да еще без тэгов)..

покажи любую попытку..

Добавлено через 9 мин.
Вот, посмотри внимательно на это. Это и есть то, что я хотел от тебя получить.
Тут эти три куска собраны вместе (плюс добавлен ввод студентов точно так же, как ввод предметов).
Ну и еще добавлены описания вспомогательной строки s и двух переменных циклов: i и j, да еще begin и end.

Посмотри и разберись, как оно работает. Разберешься - приходи, сделаем вывод таблицы.
const
MaxSubj=10;
MaxStud=100;

var
Subj: array [1..MaxSubj] of String;
Stud: array [1..MaxStud] of String;
Grad: array [1..MaxSubj,1..MaxStud] of byte;
i,j,nSubj,nStud: integer;
s: string;

begin
{ввод предметов}
WriteLn('Введите предметы, по одному на строке. Закончите пустой строкой.');
nSubj:=0;
repeat
ReadLn(s);
if s<>'' then begin
Inc(nSubj);
Subj[nSubj]:=s
end
until s='';

{ввод студентов}
WriteLn('Введите студентов, по одному на строке. Закончите пустой строкой.');
nStud:=0;
repeat
ReadLn(s);
if s<>'' then begin
Inc(nStud);
Subj[nStud]:=s
end
until s='';

{ввод оценок}
for i:=1 to nStud do begin
Write('Введите оценки студента ',Stud[i]);
for j:=1 to nSubj do begin
Write(Subj[j],': ');
ReadLn(Grad[j,i])
end
end;

{тут надо сделать вывод таблицы}

end.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9





Группа: Пользователи
Сообщений: 8
Пол: Мужской
Реальное имя: Дима

Репутация: -  0  +


пока таблицы нет оно запускаться не будет?


Сообщение отредактировано: Camaro -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(Camaro @ 19.12.2010 11:01) *
пока таблицы нет оно запускаться не будет?

А проверить так сложно?..


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11





Группа: Пользователи
Сообщений: 8
Пол: Мужской
Реальное имя: Дима

Репутация: -  0  +


Цитата(Lapp @ 19.12.2010 11:56) *

А проверить так сложно?..

Я проверил, не работает, вот и спрашиваю это я еще раз тупанул или так и должно быть...
Я саму суть понял что мы делаем, но некоторых команд даже просто обозначения не знаю...

Сообщение отредактировано: Camaro -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(Camaro @ 19.12.2010 12:01) *
Я проверил, не работает, вот и спрашиваю это я еще раз тупанул или так и должно быть...

Говори напрямую, без намеков - всем будет проще.
Как именно не работает? на каком этапе (компиляция, запуск..)?
Какую ошибку выдает?
Какой компилятор у тебя?


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13





Группа: Пользователи
Сообщений: 8
Пол: Мужской
Реальное имя: Дима

Репутация: -  0  +


Цитата(Lapp @ 19.12.2010 12:06) *

Говори напрямую, без намеков - всем будет проще.
Как именно не работает? на каком этапе (компиляция, запуск..)?
Какую ошибку выдает?
Какой компилятор у тебя?

Всё работает просто надо было в конце поставить четыре end, почему то...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(Camaro @ 20.12.2010 0:08) *
Всё работает просто надо было в конце поставить четыре end, почему то...

Этот код работает без всяких изменений/дополнений. Я это даже не поленился проверить. Если тебе потребовалось что-то дописывать - значит, ты неправильно его скопировал. А это в свою очередь значит, что могли быть и другие ошибки (и даже ТОЧНО должны быть, поскольку в этой проге НЕ ДОЛЖНО быть 4 end в конце). И если так - я не буду осуждать дальше код, который у тебя, поскольку я его даже не знаю. Я уже понял, что ты не любишь отвечать на вопросы (компилятор, сообщения об ошибках - это все у тебя, видимо, совершенно секретно), но, мне кажется, что у тебя нет другой опции. Приведи результирующий код (в который ты добавил 4 end) - только после этого я буду продолжать разговор. Надеюсь, ты понимаешь, что это не по злобе, а просто я не могу говорить о том, чего не видел.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15





Группа: Пользователи
Сообщений: 8
Пол: Мужской
Реальное имя: Дима

Репутация: -  0  +


Андрей огромное спасибо тебе за помощь, я сдал паскаль, свой старый прада пришлось попотеть. P.S. Я не то что не люблю отвечать на вопросы я просто не знаю что такое компилятор и т.д. Я наверно где то сделал ошибку при переписывании того что ты написал и из за этого у меня и попросило 4 end, в общем тему можно закрывать))) еще раз спасибо.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 26.04.2024 5:34
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name