Четверг, 09.01.2025
Pascal 4 All
[ · Новые сообщения · Участники · Правила форума · Поиск · RSS ]

 

  • Страница 1 из 1
  • 1
Модератор форума: Seqular, Pavel  

Задачи на файлы и записи
ElizabethДата: Пятница, 09.05.2008, 04:09 | Сообщение # 1
Новичок
Группа: Пользователи
Сообщений: 2
Репутация: 0
Замечания: 0%
Статус: Offline
Помогите пожалуйста решить задачки... Ну совершенно не умею работать с файлами и записями(( wacko

1. Создать на диске файл (типизированный или текстовый) file4.dat, компонентами которого являются: фамилия студента; его пол; год рождения: оценки по трем предметам. Считать эти данные из файла и вывести их на экран упорядоченно:
а) согласно успеваемости;
б) в алфавитном порядке фамилий;
в) по возрасту студентов.

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

3. Составить программу для обработки инфы о некоторых обьектах-студентах факультета. Каждый обьект обладает совокупностью признаков: фио, год рождения, пол, оценки по физике, по математике ,о информатике, степендия. Возможно использовать как запись, так и строки. Ввод как с клавиатуры ,так и с помощью типизированного-текстового файла( на выбор). И собственно само задание:
Вывести фамилии, имена и отчества всех студентов мужского пола старше 18 лет.
(понимаю ,похоже на 1, но все равно не соображу((()

Заранее спасибо... respect


Увидеть. Понять.
Захотеть. Страдать.
Дождаться. Получить.
Разочароваться. Забыть.
 
SeqularДата: Суббота, 10.05.2008, 21:49 | Сообщение # 2
Хранитель
Группа: Администраторы
Сообщений: 859
Репутация: 35
Статус: Offline
Code
Program RECS;
Uses CRT;
Const
     n = 6;
     fl = 'FILE.DAT';
Type
     v = record
         name: String;
         ves: Integer;
         prov: Byte; {0 - dielktrik, 1 - poluprovodnik, 2 - provodnik}
         end;
Var
     a: Array[1..n] of v;
     f: file of v;
     t: v;
     i, j: Byte;

Begin
ClrScr;
Assign(f, fl);
{$I-}
      ReSet(f);
{$I+}
If (IOResult <> 0) then
    Begin
    ReWrite(f);
    For i := 1 to n do
        Begin
        ClrScr;
        Writeln('Veshestvo #',i);
        Write('Nazvanie : '); Readln(a[i].name);
        Write('Ud. ves  : '); Readln(a[i].ves);
        Write('Provodnik: '); Readln(a[i].prov);
        Write(f, a[i]);
        End;
    Close(f);
    Writeln('File create, restart program');
    End
Else
    Begin
    For i := 1 to n do
        Begin
        Read(f, a[i]);
        End;
    Close(f);
    Writeln('Provodniki (ud. vesa)');
    For i := 1 to n do
        Begin
        If (a[i].prov = 2) then
           Begin
           Writeln(a[i].name,#13#10,a[i].ves:8);
           End;
        End;
    For i := 1 to n do
        For j := i + 1 to n do
            Begin
            If (a[i].ves > a[j].ves) then
               Begin
               t := a[i];
               a[i] := a[j];
               a[j] := t;
               End;
            End;
    Writeln(#13#10,'Udelnyie vesa poluprovodnikov (vozrastanie));
    For i := 1 to n do
        Begin
        If (a[i].prov = 1) then Writeln(a[i].name,#13#10,a[i].ves:8);
        End;
    End;
ReadKey;
End.

Это вторая.. При первом запуске прога создает файл и вы вручную заполняете его. При последующих запусках файл читается и выводится его содержимое согласно условиям. Если что не так - пишите! посмотрим...
(для того, чтобы ввести другие данные в файл - удалите FILE.DAT из каталога с программой)

Фича2: проводится сортировка всего массива по весам, а не только полупроводников.


Поддерживаю также проект сообщество молодых сисадминов
 
ElizabethДата: Четверг, 22.05.2008, 06:39 | Сообщение # 3
Новичок
Группа: Пользователи
Сообщений: 2
Репутация: 0
Замечания: 0%
Статус: Offline
Мне тут с помощью набросали ,только ошибки исправить не могу... Поможете?

Code
Type Student = Record
Name : String[20];
Sex : Boolean;
Year: integer;
m1,m2,m3 : byte
end;
var
s : array [1..150] of student;
c : integer;

Procedure READDATA;
Var
h : Student;
Begin
i1 := 0;
Assign(F,'Zad3.out'); Reset(F);

While Not EOF(F) Do
begin
Read(F,h);
With h do
begin
S1[i1] := h;
end
end
end;
Close(F);
End;

1) PROCEDURE SortFamiliy;
Var
i,j : Integer;
h : Student;
Begin
For i := 1 to i1-1 do
For j := i to i1-1 do
If s.Name > s[j].Name then
begin
h := s;
s := s[j];
s[j] := h
end
End;

PROCEDURE SortAge;
Var
i,j : Integer;
h : Student;
Begin
For i := 1 to i1-1 do
For j := i to i1-1 do
If s.YEar > s[j].Year then
begin
h := s;
s := s[j];
s[j] := h
end
End;

PROCEDURE SortMark;
Var
i,j : Integer;
h : Student;
Begin
For i := 1 to i1-1 do
For j := i to i1-1 do
If (s.m1+s.m2+s.m3)/3 < (s[j].m1+s[j].m2+s[j].m3)/3 then
begin
h := s;
s := s[j];
s[j] := h
end
End;


Увидеть. Понять.
Захотеть. Страдать.
Дождаться. Получить.
Разочароваться. Забыть.


Сообщение отредактировал Elizabeth - Четверг, 22.05.2008, 19:07
 
  • Страница 1 из 1
  • 1
Поиск:

Copyright MyCorp © 2025
Используются технологии uCoz
javascript:;" rel="nofollow" onclick="loginPopupForm(); return false;