+ Ответить в теме
Показано с 1 по 8 из 8

Тема: Одномерный массив в Паскале

  1. #1
    Новичок integral кто это?
    Регистрация
    14.03.2010
    Сообщений
    4
    Поблагодарил(а)
    0
    Получено благодарностей: 1 (сообщений: 1).

    По умолчанию Одномерный массив в Паскале

    Народ, подскажите ошибку в тексте программы, пожалуйста. Сообразить никак не могу

    Задача такова. Нахождение номера наименьшего элемента в массиве заданной длины среди всех положительных элементов. Длина массива вводится с клавиатуры. Печатать элементы массива по 5 штук, по формату :11. Тип обрабатываемых данных: вещественные.

    Вот мой текст программы.
    VAR
    A :array[1..50] of integer;
    N,m,i,min :integer;
    Fout :text;
    LABEL vvod;
    BEGIN
    vvod: writeln('Vvedi dlinu massiva');
    readln(m);
    if m<1 then
    begin
    writeln('Nelzya rassmatrivat menshe odnogo 4isla');
    goto vvod;
    end;
    min:=32767;
    N:=0;
    repeat
    writeln('Vvedi o4erednoi element');
    N :=N+1;
    readln(A[N]);
    if (A[N]>0) and (A[N]<min) then
    min:=A[N];
    Num:=N;
    until (N=m);
    if A[N]<0 then writeln('podxodyas4ix 4isel ne bylo')
    else
    writeln('nomer naimenshego elementa',' N');
    begin
    Assign(Fout,'MASSIV.RES');
    ReWrite(Fout);
    writeln(Fout,'Isxodnyi massiv iz ',n,' elementov');
    for i:=1 to N do
    begin
    write(Fout,A[i]:11);
    if i mod 5 = 0 then writeln(Fout);
    end;
    end;
    Close(Fout);
    END.

  2. #2
    Ветеран Prince NAMTARr кто это? Аватар для Prince NAMTARr
    Регистрация
    12.12.2007
    Адрес
    Persia - Babilon
    Возраст
    30
    Сообщений
    1,150
    Поблагодарил(а)
    175
    Получено благодарностей: 100 (сообщений: 81).

    По умолчанию

    Цитата Сообщение от integral Посмотреть сообщение
    Народ, подскажите ошибку в тексте программы, пожалуйста. Сообразить никак не могу

    Задача такова. Нахождение номера наименьшего элемента в массиве заданной длины среди всех положительных элементов. Длина массива вводится с клавиатуры. Печатать элементы массива по 5 штук, по формату :11. Тип обрабатываемых данных: вещественные.

    Вот мой текст программы.
    VAR
    A :array[1..50] of integer;
    N,m,i,min :integer;
    Fout :text;
    LABEL vvod;
    BEGIN
    vvod: writeln('Vvedi dlinu massiva');
    readln(m);
    if m<1 then
    begin
    writeln('Nelzya rassmatrivat menshe odnogo 4isla');
    goto vvod;
    end;
    min:=32767;
    N:=0;
    repeat
    writeln('Vvedi o4erednoi element');
    N :=N+1;
    readln(A[N]);
    if (A[N]>0) and (A[N]<min) then
    min:=A[N];
    Num:=N;
    until (N=m);
    if A[N]<0 then writeln('podxodyas4ix 4isel ne bylo')
    else

    writeln('nomer naimenshego elementa',' N');
    begin
    Assign(Fout,'MASSIV.RES');
    ReWrite(Fout);
    writeln(Fout,'Isxodnyi massiv iz ',n,' elementov');
    for i:=1 to N do
    begin
    write(Fout,A[i]:11);
    if i mod 5 = 0 then writeln(Fout);
    end;
    end;
    Close(Fout);
    END.
    А нафига такой корявый цикл? Не проще сначала вписать все числа в массив, а уж потом искать среди них минимальное? вот так, например:
    Writeln ('BBeguTE gJIuHy MACCuBA');
    Readln (n);
    Writeln ('BBoguTE MACCuB');
    for i:=1 to n do
    readln (a[i]);
    min:=32767;
    for i:=1 to n do
    begin
    if (a[i]>0) and (a[i]<min) then
    begin
    min:=a[i];
    x:=i;
    end;
    ну по 5 чисел, это отдельно, но вот так мб проще?
    May the Force be with YOU...

  3. 1 пользователь сказал cпасибо Prince NAMTARr за это полезное сообщение:

    Dang (18.03.2010)

  4. #3
    Джедай sda Разбег по полосе sda Разбег по полосе sda Разбег по полосе sda Разбег по полосе sda Разбег по полосе sda Разбег по полосе sda Разбег по полосе sda Разбег по полосе sda Разбег по полосе sda Разбег по полосе sda Разбег по полосе Аватар для sda
    Регистрация
    01.06.2007
    Адрес
    Москва
    Возраст
    46
    Сообщений
    8,326
    Поблагодарил(а)
    303
    Получено благодарностей: 2,545 (сообщений: 1,638).

    По умолчанию

    Цитата Сообщение от integral Посмотреть сообщение
    if A[N]<0 then writeln('podxodyas4ix 4isel ne bylo')
    else
    writeln('nomer naimenshego elementa',' N');
    Видимо здесь чего то не то. Зачем проверяется последний введенный элемент на то что он меньше нуля?

  5. #4
    Ветеран Prince NAMTARr кто это? Аватар для Prince NAMTARr
    Регистрация
    12.12.2007
    Адрес
    Persia - Babilon
    Возраст
    30
    Сообщений
    1,150
    Поблагодарил(а)
    175
    Получено благодарностей: 100 (сообщений: 81).

    По умолчанию

    Цитата Сообщение от sda Посмотреть сообщение
    Видимо здесь чего то не то. Зачем проверяется последний введенный элемент на то что он меньше нуля?
    да, похоже в этом и есть ошибка
    May the Force be with YOU...

  6. #5
    Новичок integral кто это?
    Регистрация
    14.03.2010
    Сообщений
    4
    Поблагодарил(а)
    0
    Получено благодарностей: 1 (сообщений: 1).

    По умолчанию

    Prince NAMTARr, да, так действительно проще . Я-то старалась следовать старым правилам, вот и запуталась. Теперь буду внимательней. Благодарю!

  7. #6
    Ветеран Prince NAMTARr кто это? Аватар для Prince NAMTARr
    Регистрация
    12.12.2007
    Адрес
    Persia - Babilon
    Возраст
    30
    Сообщений
    1,150
    Поблагодарил(а)
    175
    Получено благодарностей: 100 (сообщений: 81).

    По умолчанию

    Цитата Сообщение от integral Посмотреть сообщение
    Prince NAMTARr, да, так действительно проще . Я-то старалась следовать старым правилам, вот и запуталась. Теперь буду внимательней. Благодарю!
    Всегда пожалуйста
    May the Force be with YOU...

  8. #7
    Наш Чел Dang кто это? Аватар для Dang
    Регистрация
    21.10.2009
    Возраст
    30
    Сообщений
    204
    Поблагодарил(а)
    127
    Получено благодарностей: 28 (сообщений: 20).

    По умолчанию

    Цитата Сообщение от integral Посмотреть сообщение
    Prince NAMTARr, да, так действительно проще . Я-то старалась следовать старым правилам, вот и запуталась. Теперь буду внимательней. Благодарю!

    Оффтопик

  9. #8
    Почти гений геннадий Набираю обороты геннадий Набираю обороты геннадий Набираю обороты геннадий Набираю обороты геннадий Набираю обороты геннадий Набираю обороты геннадий Набираю обороты Аватар для геннадий
    Регистрация
    02.08.2005
    Сообщений
    1,607
    Поблагодарил(а)
    95
    Получено благодарностей: 437 (сообщений: 283).

    По умолчанию

    Цитата Сообщение от Prince NAMTARr Посмотреть сообщение
    for i:=1 to n do
    begin
    if (a[i]>0) and (a[i]<min) then
    begin
    min:=a[i];
    x:=i;
    end;
    Пришел к тому, что когда что-то сугубо числовое может вычисляться конечным числом способов, лучше вместо операторов ЕСЛИ использовать вычисляемые логические выражения.

    Пример1
    Изгибающий момент в балке от сосредоточенной силы Ni

    Mi(x) = (x > xi) * Ni * (x-xi)

    пока текущее сечение слева от сосред i - й силы, изгиб от нее нулевой, иначе момент нарастает по линейному закону

    Пример2

    http://forum.bratsk.org/showpost.php...68&postcount=3

    А к данной задаче метод применить не получается
    Последний раз редактировалось геннадий; 21.03.2010 в 00:13.

+ Ответить в теме

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

     

Похожие темы

  1. Ответов: 20
    Последнее сообщение: 22.11.2009, 20:03
  2. RAID-массив
    от SlipKnoT в разделе Вопросы и ответы
    Ответов: 7
    Последнее сообщение: 27.05.2007, 23:02

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
Рейтинг@Mail.ru
Администрация сайта не выражает согласия
с высказыванием участников форума и не несет
ответственности за их содержание.

Копирование любого материала возможно только
при наличии ссылки на сайт.