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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.12.2017, 17:26   #1
Arturak
Новичок
Джуниор
 
Регистрация: 25.12.2017
Сообщений: 4
По умолчанию Комбинированный тип данных

Описать тип данных "студент": фамилия ,имя ,оценки по 3 предметам ,курс. Сформировать массив студентов. Данные о студентах прочитать из текстового файла. Найти всех троичников и их количество. Заране спасибо.
Arturak вне форума Ответить с цитированием
Старый 25.12.2017, 17:39   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Arturak Посмотреть сообщение
Заране спасибо.
за что спасибо то?
Кто-то будет делать работу вместо Вас?
А Вы чем заниматься будете?

тут не автоматическая "решалка" задач.
или выкладывайте свои наработки и рассказывайте, что не получается
или идите за платной помощью в раздел Фриланс
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.12.2017, 17:55   #3
Arturak
Новичок
Джуниор
 
Регистрация: 25.12.2017
Сообщений: 4
По умолчанию

Код:
type
  stud=record
  name: string[20];
  godR: integer;
  mark: array[1..3] of byte;
end;

var
a: array[1..100] of stud;
n,i,j,k: integer;
tmp: stud;
f: boolean;

begin
write('Сколько студентов в группе? ');
readln(n);
k:=0;
writeln('Введите данные по студентам:');
for i:=1 to n do
begin
writeln(' ',i,'-й студент:');
with a[i] do
begin
write(' Фамилия: ');
readln(name);
write(' Год рождения: ');
readln(godR);
f:=false;
writeln(' Оценки по 3-м предметам (от 2 до 5 баллов)');
for j:=1 to 3 do
begin
repeat
write(' ',j,'-я оценка: ');
readln(mark[j]);
if mark[j]=2 then f:=true;
until mark[j] in [2..5];
end;
if f then inc(k);
end;
end;

for i:=2 to n do
for j:=n downto i do
if a[j-1].godR > a[j].godR then
begin
tmp:=a[j-1];
a[j-1]:=a[j];
a[j]:=tmp;
end;
writeln(' Таблица успеваемости');
writeln('-------------------------------------------');
writeln(' Фамилия Год рождения Оценки');
writeln('-------------------------------------------');
for i:=1 to n do
with a[i] do
begin
write(name,' ':20-length(name),godR,' ');
for j:=1 to 3 do write(mark[j]:3);
writeln;
end;
writeln('-------------------------------------------');
writeln('Из них двоечников = ',k);
readln;
end.
Нужно чтобы данные о студентах считывало из текстового файла



________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(это кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 26.12.2017 в 00:08.
Arturak вне форума Ответить с цитированием
Старый 25.12.2017, 19:29   #4
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,534
По умолчанию

Хорошо скопипастил (содрал, чтобы понятнее). Теперь остались пустяки : отформатировать текст, прочитать пол-странички про текстовые файлы и добавить сюда.
digitalis вне форума Ответить с цитированием
Старый 26.12.2017, 00:15   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Arturak Посмотреть сообщение
Описать тип данных "студент": фамилия ,имя ,оценки по 3 предметам ,курс.
не смущает?
Цитата:
Сообщение от Arturak Посмотреть сообщение
write(' Год рождения: ');

чтение из текстового файла ОПРЕДЕЛЁННОГО формата (какого именно, легко понять по коду:

Код:
var f : Text;

begin
  Assign(f, 'students.txt');
  Reset(f);
  readln(f, n); // Сколько студентов в группе?
  for i:=1 to n do begin
    // читаем данные i-го студента
    readln(a[i].f, name); // Фамилия:
    readln(a[i].godR); // Год рождения: 
    for j:=1 to 3 do  // Оценки по 3-м предметам (от 2 до 5 баллов)
      read(a[i].mark[j]);
    ReadLn(f)
  end;
  Close(f);

  ....

Последний раз редактировалось Serge_Bliznykov; 26.12.2017 в 00:20.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.12.2017, 10:23   #6
Arturak
Новичок
Джуниор
 
Регистрация: 25.12.2017
Сообщений: 4
По умолчанию

Не работает говорит неизвестное имя mark
Arturak вне форума Ответить с цитированием
Старый 26.12.2017, 10:38   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Это же массив в твоей структуре. И куда она потерялась? ))
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 26.12.2017, 10:39   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Arturak Посмотреть сообщение
Не работает говорит неизвестное имя mark
уж боюсь спросить, а Вы не забыли про
Цитата:
Сообщение от Arturak Посмотреть сообщение
Код:
type
  stud=record
  name: string[20];
  godR: integer;
  mark: array[1..3] of byte;
end
;
и вообще - хотите помощи - выкладывайте код.
а то можно долго гадать, что Вы там исправили и что добавили.


p.s. а насчёт этого:
Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
не смущает?
Цитата:
Сообщение от Arturak
write(' Год рождения: ');
Вы ничего сказать не хотите?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.12.2017, 11:10   #9
Arturak
Новичок
Джуниор
 
Регистрация: 25.12.2017
Сообщений: 4
По умолчанию

Код:
type
  stud=record
  name: string[20];
  mark: array[1..3] of byte;
end;

var
a: array[1..100] of stud;
n,i,j,k: integer;
f: boolean;
f1:text;
begin

  Assign(f, 'students.txt');
  Reset(f);
  readln(f, n); // Сколько студентов в группе?
  for i:=1 to n do begin
    // читаем данные i-го студента
    readln(a[i].f, name); // Фамилия:
    for j:=1 to 3 do  // Оценки по 3-м предметам (от 2 до 5 баллов)
      read(a[i].mark[j]);
  end;
  Close(f);
repeat
write(' ',j,'-я оценка: ');
if mark[j]=2 then f:=true;
until mark[j] in [2..5];
end;
if f then inc(k);
for i:=2 to n do
for j:=n downto i do
end;
begin
for i:=1 to n do
with a[i] do
begin
write(name,' ':20-length(name),' ');
for j:=1 to 3 do write(mark[j]:3);
writeln;
end;
end;
writeln('Из них двоечников = ',k);
end.
_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 26.12.2017 в 11:24.
Arturak вне форума Ответить с цитированием
Старый 26.12.2017, 11:28   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Arturak Посмотреть сообщение
Код:
repeat
write(' ',j,'-я оценка: ');
if mark[j]=2 then f:=true;
until mark[j] in [2..5];
end;
if f then inc(k)
не удалили лишнее.
Код:
repeat
write(' ',j,'-я оценка: ');
if mark[j]=2 then f:=true;
until mark[j] in [2..5];
end;
if f then inc(k);
да, если честно, и всё остальное в вашем коде надо удалить и написать цикл поиска троечников заново.
тем более, что это не сложно!

2)
Цитата:
Описать тип данных "студент": фамилия ,имя ,оценки по 3 предметам ,курс.
у Вас в структуре name - это фамилия или имя?
и где курс, на котором учится студент?

3) зачем Вы ищете двоечников, когда Вам нужно найти троечников?
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Комбинированный тип данных в Pascal Carefuly Помощь студентам 0 23.09.2013 14:47
Комбинированный тип данных. ProgrammiST-_- Паскаль, Turbo Pascal, PascalABC.NET 8 27.11.2011 08:10
Комбинированный тип данных Black_butterfly Помощь студентам 1 14.04.2011 11:29
Комбинированный тип данных ne4eHUce Помощь студентам 3 11.04.2011 01:36
Комбинированный тип данных Nightt Помощь студентам 0 19.06.2009 18:25