Помогите! Паскаль не слушается!

Тема в разделе "Pascal and Delphi", создана пользователем -, 5 июн 2010.

  1. Гость

    Проблема такая: Дан файл, содержащий целые числа. Нужно вывести среднее арифметическое этих чисел. А он (паскаль) выводит какую-то хрень. Почему?
    Код (Delphi):
    program z_1;

    uses crt;

    var f: file of integer;
    s: integer;
    k, l: real;
    i: byte;

    BEGIN
    clrscr;
    assign(f, 'z.dat');
    reset(f);
    while not eof(f) do
    begin
    s:=0;
    read(f, s);
    i:=i+1;
    k:=k+s;
    end;
    close(f);
    l:=k/i;
    writeln(l:3:3);
    readkey;
    END.
    На всякий случай
    Архив с программой и текстовым файлом
     
  2. Dock1100

    Dock1100 :-]

    Регистрация:
    9 ноя 2009
    Сообщения:
    678
    Симпатии:
    0
    Обнуляйте переменные
    Код (Delphi):
    program z_1;

    uses crt;

    var f: file of integer;
    r,i: integer; {//////////}
    k, l: real;

    BEGIN
    clrscr;
    assign(f, 'z.txt');
    i:=0;            {//////////}
    k:=0;            {//////////}
    reset(f);
    while not eof(f) do
    begin
    read(f, r);
    i:=i+1;
    k:=k+r;
    end;
    close(f);
    l:=k/i;
    writeln(l:3:3);
    readkey;
    END.
     
  3. Гость

    Насчет обнуления
    Код (Delphi):
    program gg;

    uses crt;

    var i: integer;
    k: byte;
    r: real;

    BEGIN
    clrscr;
    writeln(i);
    writeln(k);
    writeln(r);
    readkey;
    END.
    Проблема в другом. В файле содержатся числа:
    1
    3
    1
    3
    1
    0
    3
    1
    А программа выдает среднее арифметическое: 6564,818
    Очевидно, что ср. ар. будет немножко другим :) Чё делать то???
     
  4. Гость

    Ошибка здесь:
    Код (Delphi):
    read(f, r);
    Записывает не те числа, что в файле.
    Как это исправить?
     
  5. Гость

    Дан файл, содержащий целые числа.
     
  6. isqoff

    isqoff Гость

    а разве файл должен быть не .dat?(ведь переменная f создана как типизированная,а не текстовая !!!)
    ну а если он текстовый то и переменную f задавайте(f: Text;).
    Исходя из этого, какой всё таки файл дан,содержащий целые числа?
     
  7. isqoff

    isqoff Гость

    Код (Delphi):
    uses crt;
    var f:Text;
    a,sum,sred:integer;
    b:real;
    BEGIN
    a:=0;
    sum:=0;
    sred:=0;
    b:=0;
    Assign(f,'d:\z.txt');
    Reset(f);
    while not EOF(f)do
    begin
    readln(f,a);
    sum:=sum+a;
    inc(sred);
    end;
    Close(f);
    b:=sum/sred;
    write('Среднее арифмитическое содержимого файла z.txt = ',b);

    END.

    вот решение для текстового файла
     
  8. Гость

    Код (Delphi):
    program z_1;

    uses crt;

    var f: file of integer;
    s: integer;
    k, l: real;
    i: byte;

    BEGIN
    clrscr;
    assign(f, 'z.dat');
    reset(f);
    while not eof(f) do
    begin
    s:=0;
    read(f, s);
    i:=i+1;
    k:=k+s;
    end;
    close(f);
    l:=k/i;
    writeln(l:3:3);
    readkey;
    END.
    Ладно, меняем расширение у файла. Все равно ПОКАЗЫВАЕТ ТУ ЖЕ ЕРЕСЬ!!!
     
  9. Гость

    Я уж наверное тут всех достал :rolleyes:
    :crash:
     
  10. Dock1100

    Dock1100 :-]

    Регистрация:
    9 ноя 2009
    Сообщения:
    678
    Симпатии:
    0
    Вот пример, у меня все работает:
    Код (Delphi):
    var f:file of integer;
    x,k,s:integer;
    sred:real;
    begin
    assign(f,'1.tt');
    rewrite(f);

    x:=1; {пишем наши целые числа}
    write(f,x);
    x:=3;
    write(f,x);
    x:=1;
    write(f,x);
    x:=3;
    write(f,x);
    x:=1;
    write(f,x);
    x:=0;
    write(f,x);
    x:=3;
    write(f,x);
    x:=1;
    write(f,x);

    close(f);

    readln;
    k:=0;
    s:=0;

    reset(f);
    while not eof(f) do
    begin {читаем и выводим}
    k:=k+1;
    read(f,x);
    s:=s+x;
    writeln(x);
    end;

    writeln;
    sred:=s/k; {считаем среднее арифм.}
    writeln(sred:8:2);
    readln;


    close(f);
    end.
     
  11. Гость

    Когда файл cоздается программой все ок
    Код (Delphi):
    Uses
    CRT;
    var
    f:file of integer;
    l, k:real;
    i,n,a:integer;
    begin
    clrscr;
    assign(f,'C:\file.xyi');
    rewrite(f);
    write('Введите количество элементов массива: ');
    readln(n);
    for i:=1 to n do
    begin
    write('Число ',i,'-e:=');
    readln(a);
    write(f,a);
    end;
    clrscr;
    k:=0;
    i:=0;
    writeln('Содержание исходного файла: ');
    reset(f);
    while not eof(f) do
    begin
    read(f,a);
    write(a,' ');
    inc(i);
    k:=k+a;
    end;
    l:=k/i;
    writeln;
    close(f);
    writeln(l);
    readkey;
    end.
    А когда файл уже создан, то нехрена не работает!
    Код (Delphi):
    Uses
    CRT;
    var
    f:file of integer;
    l, k:real;
    i,a:integer;

    begin
    clrscr;
    assign(f,'C:\file.dat');
    k:=0;
    a:=0;
    i:=0;
    writeln('Содержание исходного файла: ');
    reset(f);
    while not eof(f) do
    begin
    read(f,a);
    write(a,' ');
    inc(i);
    k:=k+a;
    a:=0;
    end;
    l:=k/i;
    writeln;
    close(f);
    writeln(l:3:3);
    readkey;
    end.
     
  12. Dock1100

    Dock1100 :-]

    Регистрация:
    9 ноя 2009
    Сообщения:
    678
    Симпатии:
    0
    1. У мяне все работает.
    2. Скачай другой паскаль с оф сайта
    3. Возможно ничего неработает потому что assign(f,'C:\file.xyi') это и это assign(f,'C:\file.dat') два разных файла.

    Добавлено: http://tp7.info/tp7.php
     
  13. Гость

    У меня free pascal 2.2.2 до этого все программы запускались=)

    Неа file.dat ЕСТЬ НА ДИСКЕ Ц, все с ним в порядке!
     
  14. Dock1100

    Dock1100 :-]

    Регистрация:
    9 ноя 2009
    Сообщения:
    678
    Симпатии:
    0
    Я пользуюсь Turbo Pascal 7.1,
    попробуй файл сохранять не assign(f,'C:\file.dat') а assign(f,'file.dat')
     
  15. Гость

    Пробовал, не помогло...
    У подруги трх 7,1 тоже не работает!
     
  16. Dock1100

    Dock1100 :-]

    Регистрация:
    9 ноя 2009
    Сообщения:
    678
    Симпатии:
    0
    Странно, у меня всё спокойно компилится и работает нормально.
     
  17. Гость

    Прога, где файл создается программой, а потом читается и выводит на екран- работает без проблем.
    Но если вырезать кусок создания и записи в файл, то программа читает из файла другие числа!!!
    Может проблема в кодировке?


    Короче хз. Всем написавшим в этом топике- спасибо! И как говорит малахов+: "Доброго Вам здоровьеца!!! " :)
     
  18. isqoff

    isqoff Гость

    Женя,Лучше всего такие вещи делать с текстовыми файлами (возможностей больше и гемора меньше):)
     
  19. Гость

    По мне: лучше вообще такие вещи не делать ;) , но препод сказал что файл должен быть типизированным.
     
  20. Dock1100

    Dock1100 :-]

    Регистрация:
    9 ноя 2009
    Сообщения:
    678
    Симпатии:
    0
    А препод сказал на какой именно фигне делать или обязательно Free Pascal.
     
Загрузка...

Поделиться этой страницей