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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.11.2011, 15:38   #1
Jalced
 
Регистрация: 03.10.2011
Сообщений: 9
По умолчанию Работа с файлами

Почти готово, не могу расчитать средние рост и вес -_-
Файл содержит сведения о школьниках: фамилия, имя, рост и вес. Выведите список школьников, рост которых превышает задаваемую величину, и определите их средние показатели роста и веса. Среди всех найдите самого высокого школьника.
Код:
program  pr;
uses crt;
 Var vvod,vivod:text;
 f:string [7]; i:string [6] ;
     s,s1,s2,s3,s4,s5,s6,s7: string;
     r,c,rost,o,p,max,r1,r2,c1,n,c2:integer;
     w,i1,k,l:real;
 Begin
 max:=0;
     Assign(vvod, 'vvod.txt');
     Reset(vvod);
     Assign(vivod, 'vivod.txt');
     Rewrite(vivod);
     Writeln ('Введите рост ученика:');
     readln (rost);
 While not eof(vvod) do
  Begin
   Readln(vvod,s);
   s1:=s;
   s2:=copy(s1,1,pos(' ',s1)+6);
   delete(s1,1,pos(' ',s1));
   delete(s1,1,pos(' ',s1));
   s1:=copy(s1,1,pos(' ',s1));
   val(s1,r,c);
   If r>rost then Writeln(vivod,s);
   if r>max then
    begin
     max:=r;
     s3:=s2;
    end;
  end;
 Writeln('Самый высокий школьник: ',s3,' его рост ',max, ' см');
 close(vvod);
 close(vivod);
Assign(vivod, 'vivod.txt');
Reset(vivod);
While not eof(vivod) do
begin
readln (vivod, s4);
s5:=s4;
delete(s5,1,pos(' ',s5));
delete(s5,1,pos(' ',s5));
delete(s5,1,pos(' ',s5));
val (s5, r2, c2);
{l:=0;
k:=r2;
n:=n+1;
i1:=k+l;    }
write (r2);
end;
 
 {Вывод на экран второго файла}
     Writeln;
     Writeln('Второй файл содержит строки:');
     Reset(vivod);
     While not eof(vivod) do
     Begin
         Readln(vivod,s);
         Writeln(s);
     End;
close (vivod);
 End.
Jalced вне форума Ответить с цитированием
Старый 29.11.2011, 18:25   #2
Leshii
Форумчанин
 
Регистрация: 26.07.2011
Сообщений: 376
По умолчанию

Уважаемый, а где же тут сам файл?

Насколько помню то файл вроде как описывается так ( выделено красным )

Код:
Program Путеводитель;
 Uses crt;
  Type
  oblast=record
  Номер:integer;
  Название области:string[20];
  Название_обласного_центра:string[20];
  Площадь:integer;
  Количество_населения:longint;
  end;
   file_oblast=file of oblast;
   var
   t:file_oblast;
   name:string;
Ну а как среднее посчитать? Берёш и делаеш отдельно сумму( счетчики ) для веса и для роста и делиш на количество i ... только я вот тут цикла не наблюдаю, вот хоть убей. Тоесть ты переписиваеш в " текстовый файл! " все в одну строчку?
Люблю на ты.Я человек простой
Leshii вне форума Ответить с цитированием
Старый 30.11.2011, 04:02   #3
Jalced
 
Регистрация: 03.10.2011
Сообщений: 9
По умолчанию

в файле все нормально смотрится, не в 1 строчку, а в остальном я уже запутался... Я выдергиваю из файла рост с весом но они выглядят так [11067] их как то надо разделить я хз как
Jalced вне форума Ответить с цитированием
Старый 30.11.2011, 06:18   #4
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Цитата:
Сообщение от Leshii Посмотреть сообщение
Уважаемый, а где же тут сам файл?
Леший, смотри внимательнее. Тут два файла, описаны как text. Ты говоришь про типизированный файл, но если у ТС файл текстовый, набранный в Блокноте (что вполне разумно), то надо делать именно так, как он делает (детали не проверял), то есть парсить строку.

Что касается основной темы.. Ну, я как-то даже не верю, Jalced, что ты сумел отпарсить строку и не сумел такую ерунду, как найти среднее или максимум.. Такие вещи делаются на первых занятиях. На этом форуме многие тысячи таких. В основном, они, конечно, с массивами, но - какая разница?..
Извини, если я не понял твоей проблемы. Попробуй описатьее точнее, плз.
Предпочитаю на "ты".
TinMan вне форума Ответить с цитированием
Старый 30.11.2011, 14:43   #5
Jalced
 
Регистрация: 03.10.2011
Сообщений: 9
По умолчанию

Трабл решен.
У меня выводился рост, но он был слитно в одну строку написан друг с другом, проблема решена самым простым способом)
Код:
If r>rost then 
 begin
 SumRost:=SumRost+r;
 SumVes:=SumVes+Ves;
 CountRost:=CountRost+1;
 Writeln(vivod,s);
 end;
Jalced вне форума Ответить с цитированием
Старый 30.11.2011, 21:52   #6
Leshii
Форумчанин
 
Регистрация: 26.07.2011
Сообщений: 376
По умолчанию

Цитата:
Сообщение от TinMan Посмотреть сообщение
Леший, смотри внимательнее. Тут два файла, описаны как text. Ты говоришь про типизированный файл, но если у ТС файл текстовый, набранный в Блокноте (что вполне разумно), то надо делать именно так, как он делает (детали не проверял), то есть парсить строку.
Эх, когда уже новый год , хочется отдохнуть ( по покой нам только снится ). Вот всё из за проклятой лени ну никак не хочется внимательно читать то что пишут( видать таки пора очки одевать ). Так что звиняюсь перед Jalced .

Я просто бегло глянул, и как в предыдущем посте из кода понял, что человек данные в одну строчку переписывает ( то есть слитно ).
И как оказалось не одного меня с внимательностью проблемы
Люблю на ты.Я человек простой
Leshii вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с файлами as1212 Помощь студентам 0 13.11.2011 21:34
Работа с файлами С++ Malz Помощь студентам 1 23.03.2011 23:45
Работа с файлами Funtick Помощь студентам 2 17.02.2011 15:30
Работа с файлами Technolog Microsoft Office Excel 1 27.03.2009 10:50