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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.03.2008, 21:47   #1
quake1
 
Регистрация: 04.12.2007
Сообщений: 6
По умолчанию Задача на записи

Дорогие программисты! Нужна помощь в написании данной программы с помощью записей.
дано: фамилия, имя, класс, физика, геометрия, алгебра. Вывести фамилии тех, у которых ес ть хоть одна двойка

Трудность в том, что я вообще не сталкивался с записями...Пытался разобраться-не понимаю...Хочется увидеть пример написания.
Заранее спасибо.
quake1 вне форума Ответить с цитированием
Старый 04.03.2008, 09:16   #2
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Последнее время часто обращаются с задачами на записи, думая что это что-то очень сложное. Привожу решение задачи для примера, чтобы показать, что ничего сложного здесь нет, зато очень удобно работать с разными характеристиками объектов, связав их в запись. Для больших списков удобно хранить информацию в файле.
Код:
program shkola;
uses crt;
type Vedom=record     //собственно сама запись и ее поля
          fam:string[20];
          nam:string[20];
          klass:string[10];
          fiz_otc:byte;
          geom_otc:byte;
          alg_otc:byte;
          end;
var a:array[1..50]of Vedom;//массив записей, т.е. сколько учеников, такое и N
    n,i,j:integer;
begin
clrscr;
write('n=');readln(n);
writeln('Spisok uctenikov:');
writeln;
for i:=1 to n do
   begin
     write('familia: ');readln(a[i].fam);  //заносим все нужные данные об учениках
     write('imja: ');readln(a[i].nam);
     write('klass: ');readln(a[i].klass);
     write('fizika: ');readln(a[i].fiz_otc);
     write('geometria: ');readln(a[i].geom_otc);
     write('algebra: ');readln(a[i].alg_otc);
     writeln;
   end;
Writeln('Spisok dvoeshnikov:');
writeln;
for i:=1 to n do      //выбираем двоешников
if (a[i].fiz_otc=2)or(a[i].geom_otc=2)or(a[i].alg_otc=2) then
    begin
     write(a[i].fam,' ',a[i].nam,' ',a[i].klass);//выводим их фамилии,имена, класс на доску позора
     writeln;
    end;
readln;
end.
puporev вне форума Ответить с цитированием
Старый 04.03.2008, 16:53   #3
quake1
 
Регистрация: 04.12.2007
Сообщений: 6
По умолчанию

Спасибо огромное за объяснение!Теперь появился еще вопрос: как упорядочить по возрастанию/убыванию? Задача: даны 35 стран с данными
название, численность населения, площадь, доход на душу населения, средняя температура,производство, производство электроэнергии. Нужно упорядочит по возрастанию коэфиициента электрэнергия/численность.
quake1 вне форума Ответить с цитированием
Старый 04.03.2008, 16:55   #4
quake1
 
Регистрация: 04.12.2007
Сообщений: 6
По умолчанию

Спасибо огромное за объяснение!Теперь появился еще вопрос: как упорядочить по возрастанию/убыванию? Задача: даны 35 стран с данными
название, численность населения, площадь, доход на душу населения, средняя температура,производство, производство электроэнергии. Нужно упорядочит по возрастанию коэфиициента электрэнергия/численность. Вот что я написал:
Цитата:
program Strani;
uses crt;
type stranu=record
nazv:string[20];
chisl:integer;
plosh:integer;
dohod:integer;
temp:integer;
energ:integer;
end;
var a:array [1..35] of stranu;
a1,a2,a3,a4,n,i,j:integer; fl:stranu;
begin
clrscr;
write('n=');readln(n);
writeln('‘ЇЁб®Є бва**:');
writeln;
for i:=1 to n do
begin
write('Название: ');readln(a[i].nazv);
write('Численность: ');readln(a[i].chisl);
write('Площадь: ');readln(a[i].plosh);
write('Доход на душу: ');readln(a[i].dohod);
write('Температура: ');readln(a[i].temp);
write('Энергия: ');readln(a[i].energ);
writeln;
end;
for i:=1 to n do
a1:=a[i].energ;
a2:=a[i].chisl;
a3:=a[i+1].energ;
a4:=a[i+1].chisl;
if a1/a2>a3/a4
then
begin a[i]:=fl;
a[i+1]:=a[i];
fl:=a[i+1];
end;
for i:=1 to n do
write (a[i].nazv,' ',a[i].chisl,' ',a[i].energ);
readln;
end.
quake1 вне форума Ответить с цитированием
Старый 04.03.2008, 18:47   #5
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Довел до ума твою задачу, посмотри, ничего сложного, просто нужно писать то, что написано в условии.
Код:
program strany;
uses crt;
type Strana=record
          nazv:string[20];
          chisl:real; //нужно сделать тип Real т.к. есть деление и все
          plosh:real;  //данные лучше записывать в тысячах с десятыми
          temp:real;   //(кроме температуры, там типа 20,5)
          energ:real;
          end;
var a:array[1..35]of Strana;
    x:Strana;  //буфер при сортировке
    n,i,j:integer;
begin
clrscr;
writeln('Spisok stran:');
writeln;
for i:=1 to 35 do
   begin
     write('nazvanie: ');readln(a[i].nazv);
     write('chislennost: ');readln(a[i].chisl);
     write('ploshad: ');readln(a[i].plosh);
     write('temperatura: ');readln(a[i].temp);
     write('energia: ');readln(a[i].energ);
     writeln;
   end;
Writeln('Spisok dvoeshnikov:');
writeln;
for i:=1 to 34 do   //сортировка по увеличению отношения
for j:=1 to 34 do    //энергообеспеченности к численности
if a[j].energ/a[j].chisl>a[j+1].energ/a[j+1].chisl then
   begin
     x:=a[j];a[j]:=a[j+1];a[j+1]:=x; //переставляем местами всю запись
   end;
for i:=1 to 35 do  //выводим на экран страну и ее показатель
writeln(a[i].nazv,' ',a[i].energ/a[i].chisl:5:2);
readln
end.
puporev вне форума Ответить с цитированием
Старый 07.03.2009, 16:00   #6
QWR
 
Аватар для QWR
 
Регистрация: 04.03.2009
Сообщений: 8
По умолчанию

Пожалуста, помогите решить сложную задачку!
Прямая на плоскости задана уравнением AX + by + C = 0, где A и B не равно 0. Пусть файл F содержит коэффициенты N прямых. Записать в файл G коэффициенты тех прямых, которые параллельны первой из прямых, заданных в файле f.
QWR вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите решить: задача на записи (Паскаль) mpegable Помощь студентам 1 25.05.2008 17:44
Задача на записи (Paskal) Paskal??? Помощь студентам 3 20.04.2008 21:40
задача на записи Pascal kitty Помощь студентам 9 18.04.2008 18:14
задача на записи!!! Нана Паскаль, Turbo Pascal, PascalABC.NET 2 18.04.2008 12:36
Записи RECREATOR Помощь студентам 3 25.12.2007 10:58