Помощь - Поиск - Пользователи - Календарь
Полная версия: Записи. Ввод информации и печать определённых данных
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Гость
Задача
Сведения о студентах ВУЗа записаны в массиве и содержит следующую информацию: фамилия, имя отчество, пол (М или Ж), возраст (от 16 до 35), курс (от 1-го до 5-го). Напишите программу, которая вводит эту информацию и печатает следущие данные: номер курса, на котором наибольший процент мужчин.

Для решения нужно использовать записи и оператор присоединения.

FAQ смотрел, но т.к. там только основа, то не разобрался. Как объявить - понятно. Как ввести информацию тоже понятно, но как оперировать ими в теле программы не очень понятно. Помогите кодом пожалуйста
мисс_граффити
Цитата
Как объявить - понятно. Как ввести информацию тоже понятно

Сделай это для начала.

Цитата
оператор присоединения

что это?
volvo
Цитата
что это?
With ? blink.gif
мисс_граффити
буду знать, что он так называется smile.gif первый раз слышу...
Гость
Ну а дальше что?
мисс_граффити
Показать, что сделал.
*alt
Цитата(мисс_граффити @ 7.05.2007 23:03) *

Показать, что сделал.

Код

uses
  SysUtils,
  windows;

const n=3;
type
  Tpol = (m,w);
  TRec = record
     name : string [31];
     age : 16..35;
     kurs : 1..5;
     sex : Tpol;
  end;

  TBase = array [1..n] of TRec;
var x:Trec; c:char;
    base : TBase;
procedure Input(var b : TBase);
var
   i,j : integer;  c:char;
begin
  writeln('ввод базы данных. ');
  for i := 1 to n do
    with b[i] do begin
      writeln('Студент N ',i);
      writeln('Имя : ');
      readln(name);
      writeln('Возраст: ');
      readln (age);
      writeln('Курс: ');
      readln (kurs);
      writeln('Пол (m/w): ');
      readln (c);
      case c of
        'm':x.sex:=m;
        'w':x.sex:=w
      end;
      writeln;
    end;
end;


Я гостем был. Вот ввод сделал...
Посчитайте мужчин..
samec
вот как то так (набивал сдесь, так что могут быть ошибки!)

procedure percent(b : TBase);
var
   i,max : integer;
   kur:array[1..5,1..2] of integer;
   temp:real;
begin
  for i:=1 to 5 do
   begin
    kur[i,1]:=0;
    kur[i,2]:=0;
   end;
  for i := 1 to n do
    with b[i] do
      case sex of
        'm':inc(kur[kurs,1]);
        'w':inc(kur[kurs,2]);
      end;
 max:=1;
 temp:=100*kur[1,1]/(kur[1,1]+kur[1,2]);
 for i:=2 to 5 do
  if (100*kur[i,1]/(kur[i,1]+kur[i,2]))>temp then
   begin
    temp:=100*kur[i,1]/(kur[i,1]+kur[i,2]);
    max:=i;
   end;
 writeln('На ',i,'-ом курсе наибольший процент мужчин');
end;

*alt
samec спасибо, но есть трудность.
Посмотрите код. Вылетает

Код

program page126num15a;

{$APPTYPE CONSOLE}
uses
  SysUtils,
  windows;

const n=3;
type
  Tpol = (m,w);
  TRec = record
     name : string [31];
     age : 16..35;
     kurs : 1..5;
     sex : Tpol;
  end;

  TBase = array [1..n] of TRec; // База данных : информация о студентах.
var x:Trec;
    base : TBase;
procedure Input(var b : TBase); // ввод базы даннх
var
   i : integer;  c:char;
begin
  writeln('Ввод базы данных. ');
  for i := 1 to n do
    with b[i] do begin
      writeln('Студент N ',i);
      writeln('Имя : ');
      readln(name);
      writeln('Возраст: ');
      readln (age);
      writeln('Курс: ');
      readln (kurs);
      writeln('Введите пол (m/w): ');
      readln (c);
      case c of
        'm':x.sex:=m;
        'w':x.sex:=w
      end;
      writeln;
    end;
end;
procedure percent(b : TBase);
var
   i,max : integer;
   kur:array[1..5,1..2] of integer;
   temp:real;
begin
  for i:=1 to 5 do
   begin
    kur[i,1]:=0;
    kur[i,2]:=0;
   end;
  for i := 1 to n do
    with b[i] do
      case sex of
        m:inc(kur[b[i].kurs,1]);
        w:inc(kur[b[i].kurs,2]);
      end;

{!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!ВОТ тут почему-то вылетает!!!!!!!!!!!!!!!!!!!!!}
max:=1;

temp:=100*kur[1,1]/(kur[1,1]+kur[1,2]);
for i:=2 to 5 do
  if (100*kur[i,1]/(kur[i,1]+kur[i,2]))>temp then
   begin
    temp:=100*kur[i,1]/(kur[i,1]+kur[i,2]);
    max:=i;
   end;
writeln('На ',i,'-ом курсе наибольший процент мужчин');
readln;
end;

begin
  {обращение к русскому языку}
  setconsoleCp(1251);
  setconsoleOutputCp(1251);
  input(base);
  percent(base);
  readln
end.
samec
вот:

program page126num15a;

const n=3;
type
  Tpol = (m,w);
  TRec = record
     name : string [31];
     age : 16..35;
     kurs : 1..5;
     sex : Tpol;
  end;

  TBase = array [1..n] of TRec;
var x:Trec;
    base : TBase;
procedure Input(var b : TBase);
var
   i : integer;  c:char;
begin
  writeln('Ввод базы данных. ');
  for i := 1 to n do
    with b[i] do begin
      writeln('Студент N ',i);
      writeln('Имя : ');
      readln(name);
      writeln('Возраст: ');
      readln (age);
      writeln('Курс: ');
      readln (kurs);
      writeln('Введите пол (m/w): ');
      readln (c);
      case c of
        'm':sex:=m;   {вот тут я не понял, почему ты писал 'm':x.sex:=m;}
        'w':sex:=w        {'w':x.sex:=w ?????}
      end;
      writeln;
    end;
end;
procedure percent(b : TBase);
var
   i,max : integer;
   kur:array[1..5,1..2] of integer;
   temp:real;
begin
  for i:=1 to 5 do
   begin
    kur[i,1]:=0;
    kur[i,2]:=0;
   end;
  for i := 1 to n do
    with b[i] do
      case sex of
        m:inc(kur[kurs,1]);
        w:inc(kur[kurs,2]);
      end;

max:=0;                          {сдесь небольшие дороботачки}                             
temp:=0;
for i:=1 to 5 do
  if (kur[i,1]>0) then
   if (100*kur[i,1]/(kur[i,1]+kur[i,2]))>temp then
   begin
    temp:=100*kur[i,1]/(kur[i,1]+kur[i,2]);
    max:=i;
   end;
writeln('На ',max,'-ом курсе наибольший процент мужчин');
end;

begin
  input(base);
  percent(base);
  readln
end.

volvo
samec, а теперь посмотри на НАЗВАНИЕ раздела! Еще одна не компилящаяся в TP программа - пеняй на себя.

То же самое касается и автора вопроса - думать надо, прежде, чем размещать вопросы где попало...
samec
volvo исправил, а делал я её в именно в Паскале, просто те строки кода, которые в паскале не компилируются я убирал. А сдесь их поставил, для того, чтобы автор темы ещё раз не спрашивал: "а почему у меня не работает???" . вот и всё. Изините, если что не так.
Гость
volvo, а кстати, где написано в каком компиляторе должна компилиться прога. Писали-то люди на паскале, чего и требует раздел.
klem4
Гость

Исходные тексты, выкладываемые в этот раздел должны обязательно компилироваться под 16б компилятором. Для 32б есть отдельный раздел.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.