• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Помогите написать программу, Паскаль

  • Автор темы Автор темы wac
  • Дата начала Дата начала

wac

Ученик
Регистрация
20 Июн 2015
Сообщения
5
Реакции
0
Баллы
0
Помогите написать программу, Паскаль

program prim;
uses crt;
type student=record
fam:string[50];
godr:integer;
godp:integer;
os:integer;
pr:integer;
matem:integer;
angl:integer;
end;
var
arr:array [1..100] of student;

i,j:integer;
k:integer;
B:boolean;
n:integer;

m:integer;

begin
for i:=1 to n do
begin
Writeln('Введите фамилию');
readln(stud.fam);
Writeln('Введите дату рождение');
Readln(stud.godr);
Writeln('Введите год поступления в техникум');
Readln(stud.godp);
Writeln('Введите оценку по os');
readln(stud.os);
Writeln('Введите оценку по прогромированию');
Readln(stud.pr);
Writeln('Введите оценку по Высшей математике');
Readln(stud.matem);
Writeln('Введите оценку по Английскому');
readln(stud.angl);
end;
Writeln('Ввод закончен');

begin
for i:=1 to n do
begin
B:=true;
for j:=1 to m do
if (stud.os[j]<>2) or (stud.pr[j]<>2) or (stud.matem[j]<>2) or (stud.angl[j]<>2) then b:=false;


if b then writeln(stud.fam,stud.godr,stud.godp);
end;
end;
end.
задание
Составить программу для вывода записи по N студентам: фамилия, год рождения, год поступления в техникум и оценки по 4 предметам (ОС, Языки программирования, Высшая математика, Английский язык) последней аттестации. Распечатать список студентов, которые не имеют ни одной оценки-2
 
А самому отладить - слабО?
Подсказываю.
1. Поскольку ни одной команды модуля CRT в программе не используется, так и незачем ставить "uses CRT;". Убрать.
2. Поля записи оценок по разным дисциплинам у Вас заданы, как обычные скаляры, а не массивы. Поэтому величину m и связанный с ней цикл по j в операции отбора - убрать. Ну или задайте массив оценок как поле записи. Что-нибудь одно выберете.
3. В начале программы необходимо по запросу ввести n - число студентов.
4. С учетом п.2, а также логики, вместо
for j:=1 to m do
if (stud.os[j]<>2) or (stud.pr[j]<>2) or (stud.matem[j]<>2) or (stud.angl[j]<>2) then b:=false;
следует написать
if (stud.os=2) or (stud.pr=2) or (stud.matem=2) or (stud.angl=2) then b:=false;
5. В строке вывода следует разделить информацию пробелами, а то всё слипнется и будет нечитабельно, т.е. вместо
writeln(stud.fam,stud.godr,stud.godp);
следует написать
writeln(stud.fam,' ',stud.godr,' ',stud.godp);

Дерзайте!
 
Назад
Сверху