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

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

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

 
 Ответить  Открыть новую тему 
> Таблица, Помогите доделать таблицу
Camaro
сообщение 15.12.2010 14:15
Сообщение #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 - 15.12.2010 14:25
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 15.12.2010 14:32
Сообщение #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 
 К началу страницы 
+ Ответить 
TarasBer
сообщение 15.12.2010 14:34
Сообщение #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 
 К началу страницы 
+ Ответить 
Lapp
сообщение 16.12.2010 1:09
Сообщение #4


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

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

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


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

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


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





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

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


в паскале плохо разбираюсь, но можно попробовать. Значит я облажался с самого начала...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 16.12.2010 1:43
Сообщение #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 
 К началу страницы 
+ Ответить 
Camaro
сообщение 19.12.2010 10:14
Сообщение #7





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

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


Блин я совсем нуб... Попытался ввести как ты написал, но я походу немного не разобрался куда всё это писать или что... в общем не получается ни фига(((
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 19.12.2010 10:47
Сообщение #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 
 К началу страницы 
+ Ответить 
Camaro
сообщение 19.12.2010 11:01
Сообщение #9





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

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


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


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


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

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

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


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

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


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





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

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


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

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

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

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


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

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

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


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

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


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





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

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


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

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

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


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

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

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


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

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


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





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

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


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

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

 



- Текстовая версия 19.06.2025 16:55
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"