Есть ответ 👍

Дана непустая последовательность натуральных чисел, за которой следует 0. составьте программу нахождения суммы чисел этой последовательности.запустите программу на

251
257
Посмотреть ответы 3

Ответы на вопрос:


немного дополню ответ коллеги vladimirgoryachev.

а) в данной не нужен массив. нам сами числа не интересуют (нет цели специально выводить, например, 25-е число), а только их сумма. поэтому будем просто сразу считать сумму.

б) если был бы и нужен массив, то не вполне очевидно, почему он должен быть именно в 100 элементов. никак не запрещается иметь, например, 101 ненулевое число. в этом случае программа владимира либо будет работать неправильно, либо выдаст ошибку.

в) подключение библиотеки crt тут тоже не особо нужно. не думаю, что возможность очистить экран (crt в данной программе используется только для этого) существенна.

г) можно ограничиться одним циклом, а не двумя.

 

с учетом вышенаписанного, код можно переписать так: program p1;

var temp,  summ : integer;

begin

    writeln('vvod massiva: ');     summ: =0;     repeat      readln(temp);       summ: =summ+temp;     until  temp = 0;     writeln('resultat: ',summ);     readlnend.


program p1; usescrt; varmas : array[1..100] of integer; i,ms,summ : integer; begin

clrscr;

writeln('vvod massiva: ');

ms : = 1;

repeat read(mas[ms]); inc(ms); until mas[ms-1] = 0;

summ : = 0;

for i : = 1 to ms-1 do summ : = summ + mas[i];

writeln('resultat: ',summ);

readln; readln;

end.

Xtarlus
4,7(13 оценок)

Средствами pascalabc.net 3.2 эта решается просто. 1. короткое решение, оставляющее в недоумении: а для чего тут было использовать двусвязный список? ответ: потому что таково ! // pascalabc.net 3.2, сборка 1439 от 09.05.2017 // внимание! если программа не работает, обновите версию! function isfib(n: integer): boolean; begin   if (n=1) or (n=2) then result: =true   else begin       result: =false;       (var n1, var n2): =(1,2);       var fib: integer;       repeat           fib: =n1+n2;           if fib=n then begin result: =true; break end;           (n2,n1): =(fib,n2)       until fib> n       end; end; begin   var l: =readseqinteger('-> ',readinteger('n=';   l: =l.where(x-> not isfib(;   l.println end. пример n= 9 -> 3 17 13 10 12 4 11 0 5 17 10 12 4 11 0 2. несколько более длинное решение для желающих немного порулить удалением узлов. функция остается той же, а изменения делаются в главной программе. begin   var l: =readseqinteger('-> ',readinteger('n=';   var a: =l.where(x-> isfib(; // список значений для удаления   foreach var t in a do l.remove(t); // собственно удаление узлов   l.println end. 3. бонус. как это сделать без двусвязного списка (опять же, основная программа). begin   var a: =readseqinteger('-> ',readinteger('n='))           .where(x-> not isfib(;   a.println end.

Реши свою проблему, спроси otvet5GPT

  • Быстро
    Мгновенный ответ на твой вопрос
  • Точно
    Бот обладает знаниями во всех сферах
  • Бесплатно
    Задай вопрос и получи ответ бесплатно

Популярно: Информатика

Caktus Image

Есть вопросы?

  • Как otvet5GPT работает?

    otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса.
  • Сколько это стоит?

    Проект находиться на стадии тестирования и все услуги бесплатны.
  • Могу ли я использовать otvet5GPT в школе?

    Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое!
  • В чем отличия от ChatGPT?

    otvet5GPT черпает академические источники из собственной базы данных и предназначен специально для студентов. otvet5GPT также адаптируется к вашему стилю письма, предоставляя ряд образовательных инструментов, предназначенных для улучшения обучения.

Подпишись на наш телеграмм канал

GTP TOP NEWS