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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.04.2012, 17:12   #1
Monori
Пользователь
 
Аватар для Monori
 
Регистрация: 11.04.2012
Сообщений: 13
По умолчанию Паскаль, сортировка в текстовых файлах.

Добрый вечер, помогите решить задачу, проблема находиться в самом конце сообщения.
Задача: "Создать файл, содержащий информацию о десяти учащихся (Ф.И.О., три оценки, класс). Переписать сведения из этого файла в текстовый файл так, чтобы фамилии учащихся перечислялись в соответствии с порядком возрастания среднего балла".

Первая часть программы получилась следующим образом:
lol-ассоциация с первым файлом,
lol2-ассоциация со вторым файлом(готовым результатом),
x,y,z-три оценки, соответственно и n,n2,n3,n4...n10-средние баллы десяти учеников,
s,s2,s3....s10-ФИО 10-ти учеников,
d,d2....d10-класс 10-ти учеников.
Код:
program trololo;
var lol,lol2:text;
i,x,x2,x3,x4,x5,x6,x7,x8,x9,x10,y,y2,y3,y4,y5,y6,y7,y8,y9,y10,
z,z2,z3,z4,z5,z6,z7,z8,z9,z10:integer;
s,s2,s3,s4,s5,s6,s7,s8,s9,s10,d,d2,d3,d4,d5,d6,d7,d8,d9,d10:string;
n,n2,n3,n4,n5,n6,n7,n8,n9,n10:real;
begin
assign(lol,'c:\trololo.txt');
rewrite(lol);
writeln('Введите Информацию о 10-ти учащихся(Ф.И.О. учащегося, три оценки,класс):');
begin
readln(s,x,y,z,d);
readln(s2,x2,y2,z2,d2);
readln(s3,x3,y3,z3,d3);
readln(s4,x4,y4,z4,d4);
readln(s5,x5,y5,z5,d5);
readln(s6,x6,y6,z6,d6);
readln(s7,x7,y7,z7,d7);
readln(s8,x8,y8,z8,d8);
readln(s9,x9,y9,z9,d9);
readln(s10,x10,y10,z10,d10);
n:=(x+y+z)/3;
n2:=(x2+y2+z2)/3;
n3:=(x3+y3+z3)/3;
n4:=(x4+y4+z4)/3;
n5:=(x5+y5+z5)/3;
n6:=(x6+y6+z6)/3;
n7:=(x7+y7+z7)/3;
n8:=(x8+y8+z8)/3;
n9:=(x9+y9+z9)/3;
n10:=(x10+y10+z10)/3;
writeln(lol,s,', ',x,y,z,', ',d,', средний балл:',n);
writeln(lol,s2,', ',x2,y2,z2,', ',d2,', средний балл:',n2);
writeln(lol,s3,', ',x3,y3,z3,', ',d3,', средний балл:',n3);
writeln(lol,s4,', ',x4,y4,z4,', ',d4,', средний балл:',n4);
writeln(lol,s5,', ',x5,y5,z5,', ',d5,', средний балл:',n5);
writeln(lol,s6,', ',x6,y6,z6,', ',d6,', средний балл:',n6);
writeln(lol,s7,', ',x7,y7,z7,', ',d7,', средний балл:',n7);
writeln(lol,s8,', ',x8,y8,z8,', ',d8,', средний балл:',n8);
writeln(lol,s9,', ',x9,y9,z9,', ',d9,', средний балл:',n9);
writeln(lol,s10,', ',x10,y10,z10,', ',d10,' средний балл:',n10);
end;
close(lol);


Дальше как переписать сведения в другой файл понятно, но как переписать одновременно с сортировкой по возрастанию среднего балла?(n,n2,n3,n4....n10)
Monori вне форума Ответить с цитированием
Старый 11.04.2012, 17:32   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Мощно вы залепили переменные
Код:
uses
  crt;

const
  n = 10;

type
  pupil = record
    s: string[20];
    x, y, z, cl: byte;
  end;

var
  f1: file of pupil;
  f2: text;
  a: array[1..n] of pupil;
  tmp: pupil;
  i, j: byte;

begin
  assign(f1, 'out.bin');
  rewrite(f1);
  assign(f2, 'out.txt');
  rewrite(f2);
  writeln('Введите Информацию о ', n, '-ти учащихся(Ф.И.О. учащегося, три оценки,класс):');
  for i := 1 to n do
  begin
    writeln(i, ' PUPIL:');
    readln(a[i].s);
    read(a[i].x, a[i].y, a[i].z, a[i].cl);
    readln;
    write(f1, a[i]);
  end;
  for i := 1 to n - 1 do
    for j := i + 1 to n do
      if a[i].x + a[i].y + a[i].z > a[j].x + a[j].y + a[j].z then
      begin
        tmp := a[i];
        a[i] := a[j];
        a[j] := tmp;
      end;
  for i := 1 to n do
    writeln(f2, a[i].s);
  close(f1);
  close(f2);
end.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 11.04.2012, 17:51   #3
Monori
Пользователь
 
Аватар для Monori
 
Регистрация: 11.04.2012
Сообщений: 13
По умолчанию

Я ценю вашу помощь, за что вам конечно и спасибо, но я лишь просила помочь с сортировкой, а не всю программу переписывать Или все-таки моя программа не правильна?
Monori вне форума Ответить с цитированием
Старый 11.04.2012, 17:56   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Сортировка в вашем коде почти невозможна (не буду же я вручную вбивать все сравнения n1,...,n10, да не по одному разу).
Когда есть много однотипных данных, их принято заносить в массив. Тут у нас есть однотипные данные - дети. У каждого элемента есть несколько свойств (полей в записи) - ФИО, оценки, класс. Объявляем массив из таких элементов и считываем в него данные с клавиатуры (заодно записывая файл записей). Затем проводим сортировку по оценкам и записываем в текстовый файл ФИО.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 11.04.2012, 17:59   #5
Monori
Пользователь
 
Аватар для Monori
 
Регистрация: 11.04.2012
Сообщений: 13
По умолчанию

Хорошо, спасибо большое
Monori вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сравнение данных в текстовых файлах zhukovms Помощь студентам 34 05.09.2011 11:58
Быстрый поиск в больших текстовых файлах RIO Общие вопросы Delphi 6 29.04.2011 15:46
Два текстовых файла. Записать в третий те строки, которые есть и в первом, и во втором файлах (Паскаль) dark999 Паскаль, Turbo Pascal, PascalABC.NET 4 28.03.2011 21:41
Поиск и замена в текстовых файлах akm-gala Помощь студентам 1 18.06.2010 09:08
Сортировка в файлах и записях. Паскаль Elizabeth Black Помощь студентам 2 27.05.2008 21:51