Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Записи в Pascal

16K
27 ноября 2007 года
Guy
33 / / 27.11.2007
Здравствуйте уважаемые программисты! Я студент и мне нужно сдать программу на Паскале по теме Записи. Вот задание:
Составить программу, которая вводит данные о студентах:
№ п/п, фамилию, год рождения, пол, курс, вид спорта и выводит вид спорта, в котором занимаются и девушки и юноши.
Часть задачи я сделал, а именно саму таблицу и ввод, а вот найти вид спорта не могу. :confused:

В 7 сообщении исходник.
360
27 ноября 2007 года
P*t*
474 / / 15.02.2007
Что значит, что не можешь найти вид спорта?
Напиши понятнее, что ты сделал, и что нужно сделать.
16K
27 ноября 2007 года
Guy
33 / / 27.11.2007
Я сделал таблицу и ввод. Попробую изобразить визуально.
--------------------------------------------------------------
|№п/п |Фамилия |Год рожд.|Пол| Курс | Вид спорта|
---------------------------------------------------------------
|1____|Жадаев__|1990____|__м |___3_|бокс _____|

Ну вот это таблица и ввод. Я ввел данные и теперь мне нужно с ними работать. Мое задание: найти вид спорта в котором занимаются и девушки и юноши, т.е. и муж и жен пол.
257
27 ноября 2007 года
kosfiz
1.6K / / 18.09.2005
надеюсь у тебя информация по каждому студенту в массиве(т.е. работать будем с массивом записей)? если да то будет примерно так:
 
Код:
var
  i, j: word;
  students: array[1..n] of student; // student это запись хранящая инфу о студенте
..................................
for i:=1 to n do
  for j:=i+1 to n do
    if (students.sport = students[j].sport) and (students.sex <> students[j].sex) then
      begin
      // твои действия
      end;

рекомендую сделать так чтобы один и тот же вид спорта не выводился несколько раз, а так будет если будешь пользоваться приведенной схемой, но это уже другой вопрос.
360
27 ноября 2007 года
P*t*
474 / / 15.02.2007
Я бы писал так:
Код:
type
  student=record
     ...
     ...
     male:boolean;
     sport:string;
  end;
var
  students:array[1..100] of student;
  size:integer;
function findSport:string;
var a:integer;
begin
  for a:=1 to size do if students[a].male then
  begin
    for b:=1 to size do if not(students.male) and (students[a].sport=students.sport) then
    begin
       findSport:=students[a].sport;
       exit;
    end;
  end;
  findSport:='not found';
end;

Или тебе не подходит решение за квадратное время?
1.9K
27 ноября 2007 года
max_dark
256 / / 11.11.2005
Код:
type
    rec=record
        { Я оставил только необходимые поля }
        sport:string; { Вид спорта }
        sx: char; { пол [м, ж] }
    end;
    srec=record
        name:string; { Название }
        msx:boolean; { Флаг присутствия как парней, так и девушек }
    end;
const
    count=10;
var
    table:array [1..count] of rec; { Таблица с записями }
    tcount:integer; { колво записей в таблице }
    slist:array [1..count] of srec;{ список видов спорта }
    scount:integer; { Количество видов спорта }

procedure FindSports;
    function IsMsxSport(indx:integer):boolean;
        var
            i:integer;
            m,f:boolean;
    begin
        i:=1;
        m:=false;
        f:=false;
        while (i<=tcount) and ((m = false) or (f = false)) do begin
            if table.sport = slist[indx].name then begin
                if table.sx = 'м' then
                    m:=true;
                if table.sx = 'ж' then
                    f:=true;
            end;
            inc(i);
        end;
        IsMsxSport:=(m and f);
    end;
    procedure FillSportList;
        var
            i,j:integer;
            found:boolean;
    begin
        scount:=0;
        for i:=1 to tcount do begin
            found:=false;
            j:=1;
            while (j<=scount) and (found=false) do begin
                if table.sport = slist[j].name then
                    found:=true;
                inc(j);
            end;
            if found = false then begin
                inc(scount);
                slist[scount].name:=table.sport;
                slist[scount].msx:=IsMsxSport(scount);
            end;
        end;
    end;
    var
        indx:integer;
begin
    FillSportList;
    indx:=1;
    while indx<=scount do begin
        if slist[indx].msx then
            WriteLn(slist[indx].name);
        inc(i);
    end;
end;

Тормознутый способ, но по идее должен выводить список ВСЕХ видов спорта, в которых есть как и парни так и девушки
P.S.: Возможны ошибки, не проверял
16K
04 декабря 2007 года
Guy
33 / / 27.11.2007
Часть задачи я сделал, а именно саму таблицу и ввод, а вот найти вид спорта не пойму как:confused: Кто-нибудь может через счетчик?
Код:
program Zapisi;
uses crt;
type student=record
Surname,Vid_sporta:string[20];
God_rozhdeniya:word;
Pol:char;
Kurs,Nom_p_p:Byte;
end;
var
Gruppa:array [1..3] of student;
i,y:integer;
begin
clrscr;
writeln('Заполните таблицу');
Writeln('&#9556;&#9552;&#9552;&#9552;&#9552;&#9574;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9574;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9574;&#9552;&#9552;&#9552;&#9574;&#9552;&#9552;&#9552;&#9552;&#9574;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9559;');
Writeln('&#9553;№п/п&#9553;   Фамилия   &#9553;Год рожд.&#9553;Пол&#9553;Курс&#9553; Вид спорта &#9553;');
Writeln('&#9568;&#9552;&#9552;&#9552;&#9552;&#9580;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9580;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9580;&#9552;&#9552;&#9552;&#9580;&#9552;&#9552;&#9552;&#9552;&#9580;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9571;');
y:=0;
for i:=1 to 3 do with Gruppa do
     begin
Writeln('&#9553;');
gotoxy(3,5+y);
readln(Nom_p_p);
gotoxy(6,5+y);
Write('&#9553;');
readln(Surname);
gotoxy(20,5+y);
Write('&#9553;');
readln(God_rozhdeniya);
gotoxy(30,5+y);
Write('&#9553;');
readln(Pol);
gotoxy(34,5+y);
Write('&#9553;');
readln(Kurs);
gotoxy(39,5+y);
Write('&#9553;');
readln(Vid_sporta);
gotoxy(52,5+y);
writeln('&#9553;');
y:=y+2;
if i<3  then
Writeln('&#9568;&#9552;&#9552;&#9552;&#9552;&#9580;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9580;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9580;&#9552;&#9552;&#9552;&#9580;&#9552;&#9552;&#9552;&#9552;&#9580;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9571;');
if i>=3 then
writeln('&#9562;&#9552;&#9552;&#9552;&#9552;&#9577;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9577;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9577;&#9552;&#9552;&#9552;&#9577;&#9552;&#9552;&#9552;&#9552;&#9577;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9565;');

     end;
{Вывод информации}
Writeln('Виды спорта в котором занимаются и девушки и юноши');
Writeln('&#9556;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9559;');
Writeln('&#9553; Вид спорта  &#9553;');
Writeln('&#9568;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9571;');
y:=10;
for i:=1 to 3 do with Gruppa do writeln(Vid_sporta);
Writeln('&#9553;');
gotoxy(3,5+y);
gotoxy(15,5+y);
Writeln('&#9553;');
if i=3 then
y:=y+2;
writeln('&#9562;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9565;');
readkey;
end.
257
06 декабря 2007 года
kosfiz
1.6K / / 18.09.2005
вместо
 
Код:
for i:=1 to 3 do with Gruppa do writeln(Vid_sporta);

надо, наверное, так:
 
Код:
for i:=1 to 2 do
  for j:=i+1 to 3 do
    if (Gruppa.Vid_sporta = Gruppa[j].Vid_sporta) and (Gruppa.Pol <> Gruppa[j].Pol) then
      writeln(Gruppa.Vid_sporta);

хотя может кто лучше и правельнее предложит.
16K
09 декабря 2007 года
Guy
33 / / 27.11.2007
Что-то пол не проверят! Что может быть такое?Что ни пробовал не получается:(
 
Код:
for i:=1 to 2 do {with Gruppa do}
for j:=j+1 to 3 do with Gruppa do
if Vid_sporta=Vid_sporta[j] and [SIZE="4"]Pol<>Pol[m][/SIZE]  
then writeln(Vid_sporta)
else writeln('Не было такого вида спорта');

В смысле не запускается и указывает на идентификатор пола Pol[COLOR="Red"][[/COLOR]i]. Error 121.
257
09 декабря 2007 года
kosfiz
1.6K / / 18.09.2005
Цитата: Guy
Что-то пол не проверят! Что может быть такое?Что ни пробовал не получается:(
 
Код:
for i:=1 to 2 do {with Gruppa do}
for j:=j+1 to 3 do with Gruppa do
if Vid_sporta=Vid_sporta[j] and [SIZE="4"]Pol<>Pol[m][/SIZE]  
then writeln(Vid_sporta)
else writeln('Не было такого вида спорта');

В смысле не запускается и указывает на идентификатор пола Pol[COLOR="Red"][[/COLOR]i]. Error 121.


вот скажи ты смотрел код, который я привел??? я думаю что ответ - нет.
вот держи твой дополненный моим:

Код:
program Zapisi;

uses crt;

type student=record
  Surname, Vid_sporta: string[20];
  God_rozhdeniya: word;
  Pol: char;
  Kurs, Nom_p_p: Byte;
end;

var
  Gruppa: array [1..3] of student;
  i, y, j:integer;
begin
clrscr;
writeln('Заполните таблицу');
Writeln('г====T=============T=========T===T====T============¬');
Writeln('¦№п/п¦   Фамилия   ¦Год рожд.¦Пол¦Курс¦ Вид спорта ¦');
Writeln('¦====+=============+=========+===+====+============¦');
y:=0;
for i:=1 to 3 do
  with Gruppa do
  begin
    Writeln('¦');
    gotoxy(3,5+y);
    readln(Nom_p_p);
    gotoxy(6,5+y);
    Write('¦');
    readln(Surname);
    gotoxy(20,5+y);
    Write('¦');
    readln(God_rozhdeniya);
    gotoxy(30,5+y);
    Write('¦');
    readln(Pol);
    gotoxy(34,5+y);
    Write('¦');
    readln(Kurs);
    gotoxy(39,5+y);
    Write('¦');
    readln(Vid_sporta);
    gotoxy(52,5+y);
    writeln('¦');
    y:=y+2;
    if i<3  then
      Writeln('¦====+=============+=========+===+====+============¦');
    if i>=3 then
      writeln('L====¦=============¦=========¦===¦====¦============-');
  end;
{Вывод информации}
Writeln('Виды спорта в котором занимаются и девушки и юноши');
Writeln('г=============¬');
Writeln('¦ Вид спорта  ¦');
Writeln('¦=============¦');
y:=10;
for i:=1 to 2 do
  for j:=i+1 to 3 do
    if (Gruppa.Vid_sporta = Gruppa[j].Vid_sporta) and (Gruppa.Pol <> Gruppa[j].Pol) then
      writeln(Gruppa.Vid_sporta);
Writeln('¦');
gotoxy(3,5+y);
gotoxy(15,5+y);
Writeln('¦');
if i=3 then
  y:=y+2;
writeln('L=============-');
readkey;
end.
16K
13 декабря 2007 года
Guy
33 / / 27.11.2007
Все работает!Спасибо огромное! Но есть минус. При вводе студентов с одиннаковым видом спорта в 1 строку и в 3 поиск не срабатывает, т.к. цикл сравнивает между собой 1и2,2и3 записи. Что делать?
16K
14 декабря 2007 года
Guy
33 / / 27.11.2007
Может кто-то сможет составить блок-схему на эту задачу?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог