Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [PASCAL] Работа с записями


Автор: Ornik 7.12.2010, 19:44
Привет, форумчане. Подскажите пожалуйста код задачи:
Цитата

После поступления в ВУЗ о студентах собрана информация: фамилия, нуждается ли в общежитии, на какой основе поступил (коммерческой или госбюджетной), какой язык изучал. Определить: 
1). Сколько человек нуждаются в общежитии.
2). Списки языковых групп.
3). Сколько студентов обучается на коммерческой основе.


Автор: northener 8.12.2010, 02:26
Цитата(Ornik @  7.12.2010,  19:44 Найти цитируемый пост)
Привет, форумчане. Подскажите пожалуйста код задачи:

Тебе сюда: http://forum.sources.ru/index.php?showforum=149

Автор: Ornik 8.12.2010, 19:09
Сам разобрался. Может у кого схожая проблема, вот вам решение: 
Код

Program LAB8;

USES
CRT;

TYPE
zapis = Record
familiya: string;
obschejitie: string;
osnova: string;
language: string;
end;

const
endarray= 5;
Zapisi: array [1..endarray] of zapis=
((familiya: 'Sokolov'; obschejitie: 'true';
osnova: 'budjet'; language: 'angliiskii'),
(familiya: 'Petrov'; obschejitie: 'false';
osnova: 'kommercheskaya'; language: 'francuzskii'),
(familiya: 'Ivanov'; obschejitie: 'true';
osnova: 'budjet'; language: 'nemeckii'),
(familiya: 'Korolev'; obschejitie: 'false';
osnova: 'budjet'; language: 'angliiskii'),
(familiya: 'Novikov'; obschejitie: 'false';
osnova: 'kommercheskaya'; language: 'nemeckii'));

var
n:integer;

Procedure OsnKommerc (var x:integer);
Var i: integer;
Begin
x:=0;
for i:=1 to endarray do
if zapisi[i].osnova='kommercheskaya' then x:=x+1;
end;

Procedure Obsch (var x: integer);
Var i: integer;
Begin
x:=0;
for i:=1 to endarray do
if zapisi[i].obschejitie='true' then x:=x+1;
end;

Procedure LangGroup;
Var i: integer;
Begin
for i:=1 to endarray do
if zapisi[i].language='angliiskii' then writeln ('Angliiskii: ', zapisi[i].familiya);
if zapisi[i].language='nemeckii' then writeln ('Nemeckii: ', zapisi[i].familiya);
if zapisi[i].language='francuzskii' then writeln ('Francuzskii: ', zapisi[i].familiya);
end;

BEGIN

CLRSCR;

OsnKommerc (n);
Writeln ('Studentov na kommercheskoi osnove - ', n);

Writeln ('===========================================');

Obsch (n);
Writeln ('Studentov, nujdauyschihsya v oschejitii - ', n);

Writeln ('===========================================');

LangGroup;

Readln;

END.


Автор: Ornik 9.12.2010, 09:42
Не подскажете, почему вот тут
Код

if zapisi[i].language='nemeckii' then writeln ('Nemeckii: ', zapisi[i].familiya);

выводится только один студент? Как это исправить?

Автор: darkart 9.12.2010, 12:01
так...
Код

procedure LangGroup;
var 
  i: integer;
begin
  for i:=1 to endarray do
  begin
    if zapisi[i].language='angliiskii' then writeln ('Angliiskii: ', zapisi[i].familiya);
    if zapisi[i].language='nemeckii' then writeln ('Nemeckii: ', zapisi[i].familiya);
    if zapisi[i].language='francuzskii' then writeln ('Francuzskii: ', zapisi[i].familiya);
  end;
end;

а лучше так...
Код

procedure LangGroup;
var 
  i: integer;
begin
  writeln('Angliiskii:');
  for i:=1 to endarray do
    if zapisi[i].language='angliiskii' then
      writeln ( zapisi[i].familiya );

  writeln('Nemeckii:');
  for i:=1 to endarray do
    if zapisi[i].language='nemeckii' then
      writeln ( zapisi[i].familiya );

  writeln('Francuzskii:');
  for i:=1 to endarray do
    if zapisi[i].language='francuzskii' then
      writeln ( zapisi[i].familiya );
end;

Автор: Ornik 9.12.2010, 13:54
darkart, спасибо Вам за помощь!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)