Как найти результат выполнения программы

0 / 0 / 0

Регистрация: 14.03.2009

Сообщений: 4

1

Как посмотреть результат выполнения программы?

14.03.2009, 19:49. Показов 2710. Ответов 11


Студворк — интернет-сервис помощи студентам

Читаю книгу, всё понятно, похоже ваще на php, но в чем писать код чтобы его в действии увидеть??? Подскажите плз



0



683 / 232 / 16

Регистрация: 15.10.2007

Сообщений: 1,247

14.03.2009, 20:16

2

Скачай DevC++



0



woofer46

0 / 0 / 0

Регистрация: 14.03.2009

Сообщений: 4

14.03.2009, 20:27

 [ТС]

3

Вот только не хочет компилировать пишет ошибку внизу в журнале на 5ой строке

C
1
2
3
4
5
6
#include <studio.h>
 
main()
{
    printf("здравствуй, мирn");
}

5 C:Documents and SettingsAdminРабочий столБезымянный2.cpp `printf’ undeclared (first use this function)



0



577 / 571 / 65

Регистрация: 29.01.2009

Сообщений: 1,274

14.03.2009, 20:28

4

studio.h? )



0



Mecid

683 / 232 / 16

Регистрация: 15.10.2007

Сообщений: 1,247

14.03.2009, 20:38

5

Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

C
1
2
3
4
5
#include <stdio.h>
int main(){
printf("hello worldn");
return 0;
}



0



0 / 0 / 0

Регистрация: 14.03.2009

Сообщений: 4

14.03.2009, 21:06

 [ТС]

6

А можешь сказать почему так, я ведь с учебника списывал, правдо он 2003 года))



0



683 / 232 / 16

Регистрация: 15.10.2007

Сообщений: 1,247

14.03.2009, 21:09

7

Фиг его знает опечатка наено



0



0 / 0 / 0

Регистрация: 14.03.2009

Сообщений: 4

14.03.2009, 21:53

 [ТС]

8

Хм, ну ладно, СПАСИБО, если еще будут подобные обращусь)) ++

Добавлено через 16 минут 29 секунд
а я нажимаю выполнить промелькивает черное окошко бидимо командная строка и все



0



Mecid

683 / 232 / 16

Регистрация: 15.10.2007

Сообщений: 1,247

14.03.2009, 22:10

9

C
1
2
3
4
5
6
#include <stdio.h>
int main(){
printf("hello worldn");
getchar();
return 0;
}



0



5 / 4 / 1

Регистрация: 14.03.2009

Сообщений: 3

15.03.2009, 14:15

10

Читай читай=)) учебник по си довльно таки несложно за пару недель освоить если конечно сидеть как следует=))



0



3 / 3 / 0

Регистрация: 15.03.2009

Сообщений: 57

16.03.2009, 15:09

11

Цитата
Сообщение от Smoka
Посмотреть сообщение

Читай читай=)) учебник по си довльно таки несложно за пару недель освоить если конечно сидеть как следует=))

Эт смотря что вы хотите в нем знать)))и хотите ли вы просто прочитать его или научиться программировать)



0



683 / 232 / 16

Регистрация: 15.10.2007

Сообщений: 1,247

16.03.2009, 16:12

12

Цитата
Сообщение от ACTAVIA
Посмотреть сообщение

Эт смотря что вы хотите в нем знать)))

Согласен я до сих пор восхищаюсь находя все новые приемы программирования считаю его универсалом



0



Узнай цену своей работы

Формулировка задачи:

Program VR; Var l.i.m: integer; Begin l:=5, m:=2 for l:=3 to 7 do l:= l+m*i write(l); End. Заранее спасибо))

Код к задаче: «Определить результат выполнения программы.»

textual

Листинг программы

Program VR;
Var l,i,m: integer;
Begin
l:=5; m:=2;
for i:=3 to 7 do
l:= l+m*i;
write(l);
End.

Полезно ли:

5   голосов , оценка 3.600 из 5

Похожие ответы

  1. Определить время выполнения программы
  2. Найти значение получившееся переменной n в результате выполнения
  3. Что будет выдано на печать в результате выполнения следующих операторов?
  4. Уменьшить время выполнения программы
  5. Узнать затраченную скорость на выполнение программы, написанной на pascal
  6. Неверный результат в программе с условными операторами
  7. Как вывести результаты работы программы в текстовый файл в данной программе?
  8. Запись результатов работы программы в файл
  9. Определить количество чисел, для которых программа выведет такой же результат, что и для заданного числа
  10. Переменные x и y описаны в программе как целочисленные. Определите значение переменной x после выполнения следующего фрагмента программы
  11. Определите значение переменной c после выполнения следующего фрагмента программы

Результат выполнения программы

k=10

m=4

b1=1

bk=4.6

c1=1

ck=3.6

Полученный
результат: y= 5.80738

!!
Проанализируйте программу. Создав новый
файл проекта с именем
faktorial.ide,
наберите в нем текст данной программы,
откомпилируйте ее и произведите запуск
программы на выполнение.

6.3. Перегруженные функции

С++ позволяет определять несколько
функций, реализующих один и тот
же алгоритм, с одним и тем же именем.
Эта особенность называетсяперегрузкой
функции
, а сами функции —перегруженнымифункциями. Применение таких функций
делает программы более понятными и
легко читаемыми.

Перегруженные функции различаются
компилятором с помощью так называемой
сигнатуры – списка типов их
аргументов. Однако, используя в
перегруженных функциях параметры по
умолчанию, следует быть осторожным, так
как функция с пропущенными аргументами
может быть вызвана не той перегруженной
функцией.

Примером эффективного использования
перегрузки функций является задача
сортировки массивов различных типов.
Ниже приведена программа сортировки
методом «пузырька» числовых массивов
типа int,long,floatиdoubleразличной размерности (лист. 6.2).

Листинг 6.2.
func.сpp

#include
<iostream.h>

#include
<math.h>

//Прототипы
перегруженных функций
sort

void sort(int,int[]);

void sort(int,long[]);

void sort(int,float[]);

void sort(int,double[]);

void
main()
//Основная
программа

{

/*Корректируемые
параметры до использования

программы:
значение m и тип z
*/

const int m=5;
//Размерность
массива чисел

double z[m];
//Тип
массива чисел z

//Ввод массива

cout<<«Введите
элементы массива z[]:n»;

for(int
i=0;i<m;i++)

{

cout<<«z[«<<i<<«]=»;cin>>z[i];

}

cout<<«nИсходный
массив чисел:n»<<«z[«<<m<<«]={«;

for(int
i=0;i<m;i++)

cout<<z[i]<<»
«;

cout<<«}»<<endl;

cout<<«nОтсортированный
массив чисел:n»<<«z[«<<m<<«]={«;

sort(m,z);
//Обращение
к функции sort с массивом типа
double

cout<<«}»;

}

//Перегруженная
функция для массива типа int

void
sort(int
n,int
mass[])
//Заголовок
с параметром — массивом

{

//Сортировка
методом «пузырька»

for(int
i=0;i<n-1;i++)

{ int a;

for(int j=i+1;j<n;j++)

if (mass[j]<mass[i])

{a=mass[i];

mass[i]=mass[j];

mass[j]=a;

}

}

//Вывод
отсортированного массива

for(int
i=0;i<n;i++)

cout<<mass[i]<<»
«;

}

//Перегруженная
функция для массива типа long

void sort(int n,long mass[])

{

for(int i=0;i<n-1;i++)

{ long a;

for(int j=i+1;j<n;j++)

if (mass[j]<mass[i])

{a=mass[i];

mass[i]=mass[j];

mass[j]=a;

}

}

for(int i=0;i<n;i++)

cout<<mass[i]<<»
«;

}

//Перегруженная
функция для массива типа float

void sort(int n,float mass[])

{

for(int i=0;i<n-1;i++)

{ float a;

for(int j=i+1;j<n;j++)

if (mass[j]<mass[i])

{a=mass[i];

mass[i]=mass[j];

mass[j]=a;

}

}

for(int i=0;i<n;i++)

cout<<mass[i]<<»
«;

}

//Перегруженная
функция для массива типа double

void sort(int n,double mass[])

{

for(int i=0;i<n-1;i++)

{ double a;

for(int j=i+1;j<n;j++)

if (mass[j]<mass[i])

{a=mass[i];

mass[i]=mass[j];

mass[j]=a;

}

}

for(int i=0;i<n;i++)

cout<<mass[i]<<»
«;

}

Содержание:

  • Решение задания 6 ЕГЭ по информатике для 2021
  • Решения подобных заданий прошлых лет
    • Определить, какое число пропущено
    • Простые задания с двумя линейными непересекающимися функциями
    • Сумма или разность двух линейных функций (while s — n или while s + n)
    • Поиск наименьшего/наибольшего целого введенного числа d
    • Усложненные задания с двумя линейными функциями
    • Арифметическая и геометрическая прогрессия
    • Программирование: массивы и матрицы

Решение задания 6 ЕГЭ по информатике для 2021

6-е задание: «Программирование: основные конструкции»

Уровень сложности

— базовый,

Требуется использование специализированного программного обеспечения

— нет,

Максимальный балл

— 1,

Примерное время выполнения

— 4 минуты.

  
Проверяемые элементы содержания: Знание основных конструкций языка программирования, понятия переменной, оператора присваивания

До ЕГЭ 2021 года — это было задание № 8 и задание № 19 ЕГЭ

  
Задание демонстрационного варианта 2022 года ФИПИ
Плейлист видеоразборов задания на YouTube:


6_1 new: Определите, при каком наименьшем введённом значении переменной s программа выведет число 256 :

Паскаль:

1
2
3
4
5
6
7
8
9
10
11
var k,n,p,l,s,x:integer;
var s, n: integer;
begin
  readln (s);
  n := 1;
  while s <=45 do begin
    s := s + 4;
    n := n * 2
  end;
  writeln(n)
end.
Бейсик:

Python:

s = int(input())
n = 1
while s <= 45:
  s = s + 4
  n = n * 2
print( n )
С++:

#include <iostream>
using namespace std;
int main() {
int s,  n = 1;
cin >> s;
while( s <= 45 ) {
  s = s + 4;
  n = n * 2;
  }
cout << n;
}

Типовые задания для тренировки

Ответ: 14
Видеорешение подобного 6 задания на Python:
📹 Видео
📹 Видеорешение на RuTube здесь

Показать решение:

    ✎ Способ 1 (программный):
    Pascalabc.net:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    
    begin
      var s0 := 1;
      while true do // внешний цикл, бесконечный
      begin
        var s := s0;
        // --- код из условия задания --- //
        var n := 1;
        while s <= 45 do // внутренний цикл из задания
        begin
          s := s + 4;
          n := n * 2;
        end;
        // --- конец кода из условия задания --- //
        if n = 256 then // если найдено, то выводим соответствующее s
        begin 
            print(s0); 
            break;  // выход из бесконечного цикла 
        end;
        s0 := s0 + 1; // 
      end;
    end.

    Пояснение:

  • Поскольку в цикле s увеличивается, а по условию задания следует найти наименьшее значение s, то можно начать с s=1, постоянно увеличивая значение s на единицу во внешнем цикле.
  • Важно для внешнего цикла использовать другую переменную, т.к. во внутреннем цикле переменная s меняется, а нам следует каждый шаг внешнего цикла сохранить предыдущее значение s, увеличив его всего на 1. Используем переменную S1 для этих целей.
  • Бейсик:

    Python:

    s1 = 1
    while True:  # внешний цикл, бесконечный
        s = s1
        # --- код из условия задания --- 
        n = 1
        while s <= 45:
            s = s + 4
            n = n * 2
        # --- конец кода из условия задания --- 
        if n == 256:
            print(s1)
            break
        s1 += 1
    С++:

6_2 new: Определите, при каком наибольшем введённом значении переменной s программа выведет число 96:

Паскаль:

1
2
3
4
5
6
7
8
9
10
var s, n: integer;
begin
  readln (s);
  n := 3;
  while s <= 51 do begin
    s := s + 7;
    n := n * 2
  end;
  writeln(n)
end.
Бейсик:

Python:

s = int(input())
n = 3
while s <= 51:
  s = s + 7
  n = n * 2
print( n )
С++:

#include <iostream>
using namespace std;
int main() {
int s,  n = 3;
cin >> s;
while( s <= 51 ) {
  s = s + 7;
  n = n * 2;
  }
cout << n;
}

Типовые задания для тренировки

Ответ: 23
📹 Видео
📹 Видеорешение на RuTube здесь

Показать решение:

✎ Способ 1 (программный):

Pascalabc.net:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
begin
  var s1 := 50;
  while true do // внешний цикл, бесконечный
  begin
    var s := s1;
    // --- код из условия задания --- //
    var n := 3;
    while s <= 51 do // внутренний цикл из задания
    begin
      s := s + 7;
      n := n * 2;
    end;
    // --- конец кода из условия задания --- //
    if n = 96 then // если найдено, то выводим соответствующее s
    begin 
        print(s1); 
        break;  // выход из бесконечного цикла 
    end;
    s1 := s1 - 1; // 
  end;
end.

Пояснение:

  • Поскольку в цикле s увеличивается, и цикл работает пока s<=50, а по условию следует найти наибольшее значение s, то можно начать с s = 50, постоянно уменьшая значение s на единицу во внешнем цикле.
  • Важно для внешнего цикла использовать другую переменную, т.к. во внутреннем цикле переменная s меняется, а нам следует каждый шаг внешнего цикла сохранить предыдущее значение s, уменьшив его всего на 1. Используем переменную S1 для этих целей.
  • Бейсик:

    Python:

    s1 = 50
    while True:  # внешний цикл, бесконечный
        s = s1
        # --- код из условия задания --- 
        n = 3
        while s <= 51:
            s = s + 7
            n = n * 2
        # --- конец кода из условия задания --- 
        if n == 96:
            print(s1)
            break
        s1 -= 1
    С++:

    6_3 new::

    Сколько существует различных значений d, оканчивающихся на 8, при вводе которых эта приведенная программа выведnет число 50?

    Паскаль:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    var S, N, d: integer;
    begin
      readln(d);
      S := 15;
      N := 10;
      while S <= 2400 do begin
        S := S + d;
        N := N + 5;
      end;
      writeln(N);
    end.
    Бейсик:

    Python:

    d = int(input())
    S = 15
    N = 10
    while S <= 2400:
      S = S + d
      N = N + 5
    print(N)
    С++:

    Типовые задания для тренировки

    Ответ: 4

    Показать решение:

      ✎ Способ 1 (программный):
      Pascalabc.net:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      
      begin
        var counter:=0;
        var d1:=1;
        while true do
        begin
          var d := d1;
          // из условия задачи 
          var s := 15;
          var n := 10;
          while s <= 2400 do
          begin
            s := s + d;
            n:=n + 5;
          end;
          // проверка условий: увеличение счетчика
          if (d mod 10 = 8) and (n = 50) then
          begin
            counter+=1;;
          end;
          d1 += 1;
          // выход из бесконечного цикла
          if d1 = 2400 then break;
        end;
      print (counter)
      end.
    • Вывод:
    • 4
      Бейсик:

      Python:

      counter = 0
      d1 = 1
      while True:
          s = 15
          n = 10    
          d = d1
          # --- код из условия задания --- 
          while s <= 2400:
              s = s + d
              n = n + 5
          if d%10==8 and n==50:
              counter+=1
          d1=d1+1
          if d1 == 2400:
              break
      print (counter)
      С++:


    6_4 new:

    Определите наименьшее и наибольшее введённое значение переменной s, при котором программа выведет число 210. В ответ запишите оба числа в порядке убывания без пробелов и других разделителей

    Паскаль:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    var s, n: integer;
    begin
      readln(s);
      n := 600;
      while n > s do begin
        s := s + 3;
        n := n - 6
      end;
      writeln(n)
    end.
    Бейсик:

    Python:

    s = int(input())
    n = 600
    while n > s:
      s = s + 3
      n = n - 6
    print(n)
    С++:

    Ответ: 2315

    Показать решение:

      ✎ Способ 1 (программный):

      PascalAbc.NET:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      
      begin
        var s_ := -100;
        while true do
        begin
          var n := 600;
          var s := s_;
          while n > s do
          begin
            s := s + 3;
            n := n - 6
          end;
          if n = 210 then
            print(s_); 
          s_ += 1;
        if s > 1000 then
          break;
        end;
      end.
    • Вывод:
    • 15 16 17 18 19 20 21 22 23
    • Записываем в порядке убывания:
    • 2315

      Python:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      
      s_ = -100
      while True:  # внешний цикл, бесконечный
          s = s_
          n = 600
          # --- код из условия задания --- 
          while n > s:
              s = s + 3
              n = n - 6
          # --- конец кода из условия задания --- 
          if  n == 210:
              print(s_)
          s_ += 1
          if s > 1000:
              break

    6_5 new:

    Определите, при каком наибольшем положительном введённом значении переменной s программа выведет трёхзначное число.

    Паскаль:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    var s, n: integer;
    begin
      readln (s);
      n := 200;
      while s div n >= 2 do
      begin
        s := s + 5;
        n := n + 5
      end;
      writeln(s)
    end.
    Бейсик:

    Python:

    s = int(input())
    n = 200
    while s // n >= 2:
       s = s + 5
       n = n + 5
    print(s)
    С++:

    Ответ: 699

    Показать решение:

      ✎ Способ 1 (программный):

      PascalAbc.NET:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      
      begin
        var s_ := 1000;
        while true do
        begin
          var n := 200;
          var s := s_;
          while s div n >= 2 do
          begin
            s := s + 5;
            n := n + 5
          end;
          if (s > 99) and (s<1000) then
          begin
            print(s_); break; 
          end;
          s_ -= 1;
        end;
      end.

      Python:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      
      s_ = 1000
      while True:  # внешний цикл, бесконечный
          s = s_
          n = 200
          # --- код из условия задания --- 
          while s // n >=2:
              s = s + 5
              n = n + 5
          # --- конец кода из условия задания --- 
          if  99 < s < 1000:
              print(s_)
              break
          s_ -= 1

    6_6 new:

    Получив на вход некоторое натуральное число X, этот алгоритм печатает одно число. Сколько существует чисел Х, для которых алгоритм напечатает число на отрезке [2;500]?

    Паскаль:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    var x, s, n: integer;
    begin
      readln(x);
      s := 6 * (x div 15);
      n := 1;
      while s < 300 do begin
        s := s + 18;
        n := n * 2
      end;
      writeln(n)
    end.
    Бейсик:

    Python:

    x = int(input())
    s = 6 * (x // 15)
    n = 1
    while s < 300:
      s = s + 18
      n = n * 2
    print(n)
    С++:

    Ответ: 360

    Показать решение:

      ✎ Способ 1 (программный):

      PascalAbc.NET:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      
      begin
        var x := 1;
        var count := 0;
        while true do
        begin
          var s := 6 * (x div 15);
          var n := 1;
          while s < 300 do 
          begin
            s := s + 18;
            n := n * 2
          end;
          if (n >= 2) and (n <= 500) then
            count += 1;
          x += 1;
          if x > 1000 then
            break;
        end;
        print(count)
      end.

      Python:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      
      x = 1
      count = 0
      while True:  # внешний цикл, бесконечный
          s = 6 * (x // 15)
          n = 1
          while s <300:
              s = s + 18
              n = n * 2
          # --- конец кода из условия задания --- 
          if  1 < n < 501:
              count+=1
          x += 1
          if x > 1000:
              break
      print (count)

    Решения подобных заданий прошлых лет

    Определить, какое число пропущено

    6_14:

    Сопоставьте формулу:

    и программу, предназначенную для расчета по данной формуле. Программа написана правильно, а в формуле допущена ошибка.

    Определите, где и какое число в формуле пропущено?

    Паскаль:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
    var k,n,p,l,s,x:integer;
    begin
      writeln('введите n='); readln(n);
      writeln('введите x='); readln(x);
      s:=0;
      p:=1;
      l:=x;
      For k:=1 to n do 
        begin
          p:=p * k;
          s:=s + 3*l/p;
          l:=l*x;
        end;
      writeln('S=',S:5:2);
    end.
    Бейсик:

    INPUT "введите n=", n
    INPUT "введите x=", x
    s=0: p=1
    l=x
    FOR k:=1 to n  
          p = p * k: s = s + 3*l/p
          l = l*x
    NEXT k
    PRINT "S=",S
    END
    Python:

    n = int(input('введите n='))
    x = int(input('введите x='))
    s=0
    p=1
    l=x
    For k in range (1,n+1): 
          p*= k
          s+=3*l/p
          l*=x
    print('S=',S)
    С++:

    #include <iostream>
    using namespace std;
    int main() {
    int k,n,p,s,x;
    printf("введите n="); scanf("%d",&n);
    printf("введите x="); scanf("%d",&x);
    l=x;
    for (k=1,s=0,p=1;k<=n;k++) {
      p*=k;
      s+=3*l/p;
      l*=x;
    }
    printf("s=%d",s);
    }

    Ответ: 3

    Показать решение:

    • Рассмотрим формулу:

    • Фактически она обозначает: сумма xk/ k! для всех k, начиная от 1 до n.

    • Рассмотрим алгоритм программы:
    • Основные действия происходят в цикле, в котором k изменяется от 1 до n (n вводится в начале программы):
    • For k:=1 to n do
    • В следующей строке кода происходит вычисление факториала числа k (в первой итерации цикла 1!, во второй итерации 2! и т.д.):
    • p:=p * k;
    • Следующее выражение служит для подсчета x в степени k (переменной l в начале программы присваивается значение введенного x):
    • l:=l*x;
    • Основная же формула сумматора заключена в строке:
    • s:=s + 3*l/p;
    • Видим, что в исходной заданной формуле в числителе отсутствует число 3.
    • Т.е. исходная формула должна была выглядеть так:

    Простые задания с двумя линейными непересекающимися функциями

    6_3:

    Определите, что будет напечатано в результате работы следующего фрагмента программы:

    Паскаль:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    var k,s:integer;
    begin
      s:=512;
      k:=0;
      while s<2048 do
        begin
          s:=s+64;
          k:=k+1;
         end;
      write(k);
    end.
    Бейсик:

    DIM S, K AS INTEGER
    S = 512
    K = 0
    WHILE S < 2048
      S = S + 64
      K = K + 1
    WEND
    PRINT K
    Python:

    s = 512
    k = 0
    while s < 2048:
      s = s + 64
      k = k + 1
    print(k)
    С++:

    #include <iostream>
    using namespace std;
    int main() {
    int s = 512, k = 0;
    while (s < 2048) {
      s = s + 64;
      k = k + 1;
    }
    cout << k << endl;
    return 0;
    }

      
    Подобные задания для тренировки

    Ответ: 24

    Показать решение:

    Рассмотрим алгоритм программы:

    • В цикле k увеличивается на единицу (k — счетчик). Соответственно, k будет равно количеству итераций (повторов) цикла. После завершения работы цикла k выводится на экран, т.е. это и есть результат работы программы.
    • В цикле s увеличивается на 64. Для простоты расчетов возьмем начальное s не 512, а 0. Тогда условие цикла поменяется на s < 1536 (2048 — 512 = 1536):
    • s:=0;
      k:=0;
      while s < 1536 do
         begin
         ...
      
    • Цикл будет выполняться пока s<1536, а s увеличивается на 64, отсюда следует что итераций цикла (шагов) будет:
    • 1536 / 64 = 24
    • Соответственно, k = 24.

    📹 Видео
    📹 Видеорешение на RuTube здесь (теоретическое решение)


    Определите, что будет напечатано в результате выполнения программы:

    Паскаль:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    var s, i: integer;
    begin
    i := 1;
    s := 105;
    while s > 5 do
    begin
      s := s - 2;
      i := i + 1
    end;
    writeln(i)
    end.
    Бейсик:

    DIM S, I AS INTEGER
    I = 1
    S = 105
    WHILE S > 5
      S = S - 2
      I = I + 1
    WEND
    PRINT I
    Python:

    i = 1
    s = 105
    while s > 5:
      s = s - 2
      i = i + 1
    print(i)
    С++:

    #include <iostream>
    using namespace std;
    int main() {
    int s = 105, i = 1;
    while (s > 5) {
      s = s - 2;
      i = i + 1;
    }
    cout << i << endl;
    return 0;
    }

    Ответ: 51

    Показать решение:

    • Рассмотрим алгоритм. Цикл зависит от переменной s, которая уменьшается каждую итерацию цикла на 2.
    • В цикле также присутствует счетчик — переменная i, которая увеличится на единицу ровно столько раз, сколько итераций (проходов) цикла. Т.е. в результате выполнения программы распечатается значение, равное количеству итераций цикла.
    • Поскольку условие цикла зависит от s, нам необходимо посчитать, сколько раз сможет s уменьшиться на 2 в цикле. Для удобства подсчета изменим условие цикла на while s > 0; так как мы s уменьшили на 5, соответственно, изменим и 4-ю строку на s:=100 (105-5):
    • ...
      s := 100;
      while s > 0 do
      begin
      ...
      
    • Для того чтобы посчитать, сколько раз выполнится цикл, необходимо 100 разделить на 2, т.к. s каждый шаг цикла уменьшается на 2:
      100 / 2 = 50 -> количество итераций цикла
      
    • В 3-й строке видим, что начальным значением i является 1, т.е. в первую итерацию цикла i = 2. Значит, нам необходимо к результату (50) прибавить 1.
    • 50 + 1 = 51
    • Это значение и будет выведено на экран.

    6 задание. Демоверсия ЕГЭ 2018 информатика:

    Запишите число, которое будет напечатано в результате выполнения следующей программы.
    Паскаль:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    var s, n: integer;
    begin
    s := 260;
    n := 0;
    while s > 0 do
    begin
      s := s - 15;
      n := n + 2
    end;
    writeln(n)
    end.
    Бейсик:

    DIM S, N AS INTEGER
    S = 260
    N = 0
    WHILE S > 0
      S = S - 15
      N = N + 2
    WEND
    PRINT N
    Python:

    s = 260
    n = 0
    while s > 0:
      s = s - 15
      n = n + 2
    print(n)
    С++:

    #include <iostream>
    using namespace std;
    int main() {
    int s = 260, n = 0;
    while (s > 0) {
      s = s - 15;
      n = n + 2;
    }
    cout << n << endl;
    return 0;
    }

    Ответ: 36

    Показать решение:

      Рассмотрим алгоритм:

    • Цикл зависит от значения переменной s, которая изначально равна 260. В цикле переменная s постоянно меняет свое значение, уменьшаясь на 15.
    • Цикл завершит свою работу когда s <= 0. Значит, необходимо посчитать сколько чисел 15 «войдет» в число 260, иными словами:
    • 260 / 15 ~ 17,333...
    • Эта цифра должна соответствовать количеству шагов (итераций) цикла. Так как условие цикла строгое — s > 0, то увеличим полученное число на единицу:
    • 17 + 1 = 18 итераций цикла
      
      Проверим:
      17 * 15 = 255  (< 260)
      18 * 15 = 270 (> 260)
      
    • Проверим на более простом примере. Допустим, изначально s=32. Два прохождения цикла даст нам s = 32/15 = 2,133... Число 2 больше 0, соответственно, цикл будет работать еще третий раз.
    • В результате работы программа распечатывает значение переменной n (искомый результат). В цикле переменная n, изначально равная 0, увеличивается на 2. Так как цикл включает 18 итераций, то имеем:
    • n = 18 * 2 = 36

    📹 Видео
    📹 Видеорешение на RuTube здесь (теоретическое решение)


    6_4:

    Определите, что будет напечатано в результате выполнения следующего фрагмента программы:

    Паскаль:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    var k,s: integer;
    begin
      k:=1024;
      s:=50;
      while s>30 do
      begin
        s:=s-4;
        k:=k div 2;
      end;
      write(k)
    end.
    Бейсик:

    DIM S, K AS INTEGER
    S = 50
    K = 1024
    WHILE S > 30
      S = S - 4
      K = K  2
    WEND
    PRINT K
    Python:

    s = 50
    k = 1024
    while s > 30:
      s = s - 4
      k = k // 2
    print(k)
    С++:

    #include <iostream>
    using namespace std;
    int main() {
    int s = 50, k = 1024;
    while (s > 30) {
      s = s - 4;
      k = k / 2;
    }
    cout << k << endl;
    return 0;
    }

    Ответ: 32

    📹 Видео
    📹 Видеорешение на RuTube здесь (теоретическое решение)


    6_5:

    Определите значение переменной c после выполнения следующего фрагмента программы. Ответ запишите в виде целого числа.

    Паскаль:

    1
    2
    3
    4
    5
    6
    7
    
    a:=-5;
    c:=1024;
    while a<>0 do
    begin
      c:=c div 2;
      a:=a + 1
    end;
    Бейсик:

    A = -5
    C = 1024
    WHILE A <> 0
      C = C  2
      A = A + 1
    WEND
    Python:

    a = -5
    c = 1024
    while a != 0:
      c = c // 2
      a = a + 1
    С++:

    int a = -5, c = 1024;
    while (a != 0) {
      c = c / 2;
      a = a + 1;
    }

    Ответ: 32

    📹 Видео
    📹 Видеорешение на RuTube здесь (теоретическое решение)


    6_12:

    Определите, что будет напечатано в результате работы следующего фрагмента программы.

    Паскаль:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    var n, s: integer;
    begin
    n := 1;
    s := 0;
    while s <= 365 do begin
      s := s + 36;
      n := n * 2
    end;
    write(n)
    end.
    Бейсик:

    N = 1
    S = 0
    WHILE S <= 365
      S = S + 36
      N = N * 2
    WEND
    PRINT N
    Python:

    n = 1
    s = 0
    while s <= 365:
      s = s + 36
      n = n * 2
    print(n)
    С++:

    using namespace std;
    int main() {
    int n = 1, s = 0;
    while (s <= 365) {
      s = s + 36;
      n = n * 2;
    }
    cout << n << endl;
    return 0;
    }

    Ответ: 2048

    Показать решение:

    • с каждым шагом цикла значение s увеличивается на 36, пока не станет больше 365; а значение n увеличивается в 2 раза, так что n=2k, где k – это число итераций цикла;
    • поскольку s увеличивается на 36, конечное значение s должно быть равно 0+36*k , достигается при k=11 (и s=36*11=396);
    • тогда n = 2k = 211 = 2048.

    Сумма или разность двух линейных функций (while s — n или while s + n)

    6_7:

    Запишите число, которое будет напечатано в результате выполнения следующей программы:

    Паскаль:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    var s, n: integer;
    begin
    s := 522;
    n := 400;
    while s - n > 0 do
      begin
      s := s - 20;
      n := n - 15
      end;
    write(s)
    end.
    Бейсик:

    DIM S, N AS INTEGER
    S = 522
    N = 400
    WHILE S - N > 0
      S = S - 20
      N = N - 15
    WEND
    PRINT S
    Python:

    s = 522
    n = 400
    while s - n > 0:
      s = s - 20
      n = n - 15
    print(s)
    С++:

    #include <iostream>
    using namespace std;
    int main() {
    int s = 522, n = 400;
    while (s - n > 0) {
      s = s - 20;
      n = n - 15;
    }
    cout << s << endl;
    return 0;
    }

      
    Подобные задания для тренировки

    Ответ: 22

    Показать решение:

    • В алгоритме присутствует цикл. Для того, чтобы разобраться в алгоритме, выполним трассировку начальных итераций цикла:
    • № шага условие цикла s n
      1 522-400=122
      122 > 0
      522-20=502 400-15=385
      2 502-385=117
      117 > 0
      502-20=482 385-15=370
      3 482-370=112
      112 > 0
    • Видим, что в условии разница между значениями составляет 5:
    • 122 - 117 = 5
      117 - 112 = 5
      ...
      
    • Таким образом, чтобы определить количество итераций (шагов) цикла, необходимо значение условия цикла, полученное в первой итерации, разделить на 5:
    • 122 / 5 = 24,4
      
      24 * 5 = 120 (120 + 2 = 122)
      

      Это значит, что на 24-й итерации цикла переменные s и n получили такие значения, после которых условие еще осталось истинным: 2 > 0. На 25-м шаге выполняется это условие:

      № шага условие цикла s n
      25 2 > 0 s-20=… n-15=…
    • В конце выполнения 25-й итерации, получаем условие для 26-й итерации:
    • 25 * 5 = 125 (125 - 3 = 122)
      
      № шага условие цикла s n
      25 2 > 0 s-20=… n-15=…
      26 3 < 0 не выполняется не выполняется
    • Значит, всего в цикле присутствует 25 итераций, в каждой из которых s уменьшается на 20. Посчитаем, на сколько уменьшится значение s в общем:
    • 25 * 20 = 500 (за 25 итераций)
      
      522 - 500 = 22 (вычитаем из исходных данных)
      

    Результат: 22

    📹 Видео

    📹 Видеорешение на RuTube здесь (теоретическое решение)


    6_13

    Запишите число, которое будет выведено в результате работы программы:

    Паскаль:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    var s, n: integer;
    begin
      s := 10;
      n := 55;
      while n > s do begin
        s := s + 1;
        n := n - 1
      end;
      writeln(n)
    end.
    Бейсик:

    DIM S, N AS INTEGER
    S = 10
    N = 55
    WHILE N > S
      S = S + 1
      N = N - 1
    WEND
    PRINT N
    Python:

    s = 10
    n = 55
    while n > s:
      s = s + 1
      n = n - 1
    print(n)
    С++:

    #include <iostream>
    using namespace std;
    int main() {
    int s = 10, n = 55;
    while (n > s) {
      s = s + 1;
      n = n - 1;
    }
    cout << n << endl;
    return 0;
    }

    Ответ: 32

    Показать решение:

    • Для условия цикла — перенесем влево:
    • n - s > 0
    • Согласно начальным значениям, имеем:
    • 55 - 10 = 45
    • Запишем, как будет изменяться условие цикла в каждой итерации (в каждом шаге):
    • n - 1 > s + 1 =>
      n - s - 2 > 0
      
    • Т.е. условие цикла будет истинным пока возможно вычитать 2. Сколько раз можно вычесть два из 45?
    • для 22 итераций:
      2 * 22 = 44
      в условии цикла имеем 45 > 44, т.е. условие еще истинно
      для 23 итераций:
      2 * 23 = 46
      в условии цикла имеем 45 > 46 - условие ложно, т.е. цикл прекращает работу
    • Соответственно, получили 23 итерации цикла.
    • Изначально n = 55. С каждой итерацией выполнялось n-1. Посчитаем n:
    • n = 55 - 23 = 32

    Поиск наименьшего/наибольшего целого введенного числа d

    ЕГЭ 6.8:

    При каком наименьшем целом введенном числе d после выполнения программы будет напечатано число 192?

    Паскаль:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    var k,s,d: integer;
    begin
      readln (d);
      s:=0;
      k:=0;
      while k < 200 do
      begin
        s:=s+64;
        k:=k+d;
      end;
      write(s);
    end.
    Бейсик:

    DIM S, K, D AS INTEGER
    INPUT D
    S = 0
    K = 0
    WHILE K < 200
      S = S + 64
      K = K + D
    WEND
    PRINT S
    Python:

    d = int (input ())
    s = 0
    k = 0
    while k < 200:
      s = s + 64
      k = k + d
    print(s)
    С++:

    #include <iostream>
    using namespace std;
    int main() {
    int s = 0, k = 0;
    int d;
    cin >> d;
    while (k < 200) {
      s = s + 64;
      k = k + d;
    }
    cout << s << endl;
    return 0;
    }

      
    Подобные задания для тренировки

    Ответ: 67

    Показать решение:

    Рассмотрим алгоритм программы:

    • Цикл зависит от переменной k, которая каждую итерацию цикла увеличивается на значение d (вводимое). Цикл закончит «работу», когда k сравняется с 200 или превысит его (k >= 200).
    • Результатом программы является вывод значения переменной s. В цикле s увеличивается на 64.
    • Так как по заданию необходимо, чтобы вывелось число 192, то число повторов цикла определим так:
    • 64 * x = 192
      число повторов: x = 192 / 64 = 3  
      
    • Так как в цикле k увеличивается на значение d, а повторов цикла 3 (при этом цикл завершается при k>=200), составим уравнение:
    • 3 * d = 200 
      d = 200/3 ~ 66,66
      
    • Поскольку число получилось нецелое, то проверим и 66 и 67. Если мы возьмем 66, то:
    • 66 + 66 + 66  = 198  (< 200)

      т.е. цикл после трех прохождений еще продолжит работу, что нам не подходит.

    • Для 67:
    • 67 + 67 + 67 = 201 (>200)
    • Данное число 67 нас устраивает, оно наименьшее из возможных, что и требуется по заданию.

    📹 Видео
    📹 Видеорешение на RuTube здесь


    6_9:

    Запишите через запятую наименьшее и наибольшее значение числа d, которое нужно ввести, чтобы после выполнения программы было напечатано 153?

    Паскаль:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    var n, s, d: integer;
    begin
      readln(d);
      n := 33;
      s := 4;
      while s <= 1725 do begin
        s := s + d;
        n := n + 8
      end;
      write(n)
    end.
    Бейсик:

    DIM S, N, D AS INTEGER
    INPUT D
    N = 33
    S = 4
    WHILE S <= 1725
      S = S + D
      N = N + 8
    WEND
    PRINT N
    Python:

    d = int (input ())
    n = 33
    s = 4
    while s <= 1725:
      s = s + d
      n = n + 8
    print(n)
    С++:

    #include <iostream>
    using namespace std;
    int main() {
    int s = 4, n = 33;
    int d;
    cin >> d;
    while (s <= 1725) {
      s = s + d;
      n = n + 8;
    }
    cout << n << endl;
    return 0;
    }

    Ответ: 115, 122

    Показать решение:

    Разберем листинг программы:

    • Цикл программы зависит от значения переменной s, которая в цикле постоянно увеличивается на значение d (d вводится пользователем в начале программы).
    • Кроме того, в цикле переменная n увеличивается на 8. Значение переменной n выводится на экран в конце программы, т.е. по заданию n к концу программы должно n = 153.
    • Необходимо определить количество итераций цикла (прохождений). Так как начальное значение n = 33, а в конце оно должно стать 153, в цикле увеличиваясь на 8, то сколько раз 8 «поместится» в 120 (153 — 33)? :
    • 120 / 8 = 15 раз (количество итераций цикла)
    • Как мы определили, цикл зависит от s, которая в начале программы s = 4. Для простоты работы примем, что s = 0, тогда изменим и условие цикла: вместо s <= 1725 сделаем s <= 1721 (1725-1721)
    • ...
       s := 0;
       while s <= 1721 do begin
      ...
      
    • Найдем d. Так как цикл выполняется 15 раз, то необходимо найти такое целое число, которое при умножении на 15 возвращало бы число большее 1721:
    • 1721 / 15 = 114,733 - не целое, не подходит
      1722 / 15 = 114,8 - не целое, не подходит
      ...
      берем кратное 5:
      1725 / 15 = 115 - целое, подходит!
      
    • 115 — это наименьшее d при котором n станет равным 153 (за 15 шагов цикла).
    • Найдем наибольшее d. Для этого надо найти такое число, которое соответствует неравенствам:
    • 14 * d <= 1721
      при этом:
      15 * d > 1721
      
    • Найдем:
    • 14 * 122 = 1708 (<=1721)
      15 * 122 = 1830 (>1721)
      
    • Наибольшее d=122

    📹 Видео


    Усложненные задания с двумя линейными функциями

    6_6:

    Запишите число, которое будет напечатано в результате выполнения следующей программы:

    Паскаль:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    var s, n: integer;
    begin
      s := 0;
      n := 0;
      while 2*s*s < 123 do begin
        s := s + 1;
        n := n + 2
      end;
      writeln(n)
    end.
    Бейсик:

    DIM S, N AS INTEGER
    S = 0
    N = 0
    WHILE 2*S*S < 123
      S = S + 1
      N = N + 2
    WEND
    PRINT N
    Python:

    s = 0
    n = 0
    while 2*s*s < 123:
      s = s + 1
      n = n + 2
    print(n)
    С++:

    #include <iostream>
    using namespace std;
    int main() {
    int s = 0, n = 0;
    while (2*s*s < 123) {
      s = s + 1;
      n = n + 2;
    }
    cout << n << endl;
    return 0;
    }

      
    Подобные задания для тренировки

    Ответ: 16

    Показать решение:

    Разберем листинг программы:

    • В цикле переменная s постоянно увеличивается на единицу (работает как счетчик), а переменная n в цикле увеличивается на 2.
    • В результате работы программы на экран выводится значение n.
    • Цикл зависит от s, причем работа цикла завершится когда 2 * s2 >= 123.
    • Необходимо определить количество прохождений цикла (итераций цикла): для этого определим такое наименьшее возможное s, чтобы 2 * s2 >= 123:
    • 1 шаг: s = 2*12=2
      2 шаг: s = 2*22=8
      3 шаг: s = 2*32=18
      ...
      7 шаг: s = 2*72=98 (меньше 123, т.е. цикл еще работает)
      8 шаг: s = 2*82=128 (больше 123, цикл не работает! )
      

      Либо просто нужно было бы найти такое наименьшее возможное четное число >= 123, которое при делении на 2 возвращало бы вычисляемый корень числа:

      s=124/2 = √62 - не подходит!
      s=126/2 = √63 - не подходит!
      s=128/2 = √64 = 8 - подходит!
      
    • Таким образом, программа выполнит 8 итераций цикла.
    • Определим n, которая увеличивается каждый шаг цикла на 2, значит:
    • n = 2 * 8 = 16

    📹 Видео


    Арифметическая и геометрическая прогрессия

    6_10:

    Определите, что будет напечатано в результате работы следующего фрагмента программы:

    Паскаль:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    var k, s: integer;
    begin
      s:=3;
      k:=1;
      while k < 25 do begin
        s:=s+k;
        k:=k+2;
      end;
      write(s);
    end.
    Бейсик:

    DIM S, K AS INTEGER
    S = 3
    K = 1
    WHILE K < 25
      S = S + K
      K = K + 2
    WEND
    PRINT S
    Python:

    s = 3
    k = 1
    while k < 25:
      s = s + k
      k = k + 2
    print(s)
    С++:

    #include <iostream>
    using namespace std;
    int main() {
    int s = 3, k = 1;
    while (k < 25) {
      s = s + k;
      k = k + 2;
    }
    cout << s << endl;
    return 0;
    }

      
    Подобные задания для тренировки

    Ответ: 147

    Показать решение:

    Разберем листинг программы:

    • Результатом программы является вывод значения s.
    • В цикле s меняется, увеличиваясь на k, при начальном значении s = 3.
    • Цикл зависит от k. Выполнение цикла завершится при k >= 25. Начальное значение k = 1.
    • В цикле k постоянно увеличивается на 2 -> значит, можно найти количество итераций цикла.
    • Количество итераций цикла равно:
    • n = 25 / 2 ~ 12 
      

      (т.к. k изначально равнялось 1, то в последнее, 12-е прохождение цикла, k = 25; условие цикла ложно)

    • В s накапливается сумма арифметической прогрессии, последовательность элементов которой удобней начать с 0 (а не с 3, как в программе). Поэтому представим, что в начале программы s = 0. Но при этом не забудем, что в конце нам необходимо будет к результату прибавить 3!
    • s:=0;
      k:=1;
      while k < 25 do begin
       ...
      
    • Тогда арифметическая прогрессия будет выглядеть:
    • 1 + 3 + 5 + 7 ... 
      количество членов прогрессии - 12, т.к. 12 итераций цикла
      
    • Существует формула вычисления суммы арифметической прогрессии:
    • s = ((2 * a1 + d * (n — 1)) / 2) * n

      где a1 — первый член прогрессии,
      d — разность,
      n — количество членов прогрессии (в нашем случае — кол-во итераций цикла)

    • Подставим значения в формулу:
    • (2 * 1 + 2 * 11) / 2 * 12 = 144
      
    • Не забудем, что мы к результату должны прибавить 3:
    • 144+3 = 147
      
    • Это и есть значение s, которое выводится в результате работы программы.

    📹 Видео


    Государственный выпускной экзамен ГВЭ 2019 (информатика ГВЭ ФИПИ, № 15):

    Запишите число, которое будет напечатано в результате выполнения программы:

    Паскаль:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    var n, s: integer;
    begin
    n := 1;
    s := 0;
    while n <= 1000 do
      begin
      s := s + n;
      n := n * 2
      end;
    write(s)
    end.
    Бейсик:

    DIM N, S AS INTEGER
    N = 1
    S = 0
    WHILE N <= 1000
      S = S + N
      N = N * 2
    WEND
    PRINT S
    Python:

    n = 1
    s = 0
    while n <= 1000:
      s = s + n
      n = n * 2
    print(s)
    С++:

    #include <iostream>
    using namespace std;
    int main() {
    int n = 1, s = 0;
    while (n <= 1000) {
      s = s + n;
      n = n * 2;
    }
    cout << s << endl;
    return 0;
    }

    Ответ: 1023

    Показать решение:

      Рассмотрим алгоритм:

    • Условие цикла зависит от переменной n, которая изменяется в цикле согласно получению степеней двойки:
    • 1  2  4  8  16  32  64  128  256  512  1024
      
    • Когда переменная n принимает значение 1024 (11-й шаг цикла), условие цикла становится ложным и цикл перестает работать. На экран выводится значение s.
    • Переменная s — это сумма элементов геометрической прогрессии, т.к. в ней аккумулируются значения n (числовой ряд, представляющий собой геометрическую прогрессию).
    • Вспомним формулы суммы геометрической прогрессии:
    • 1.

      [ S_{n} = frac {b_1-b_{n}*q}{1-q} ]

      2.

      [ S_{n} = b_{1} * frac {1-q^n}{1-q} ]

    • В нашем случае знаменатель q = 2, первый элемент прогрессии b1 = 1. Обратим внимание, что на последнем шаге к сумме добавляется значение 512, т.е. n = 10, а bn = 512. Только после этого n еще раз увеличивается в 2 раза и становится = 1024.
    • Вычислим s по формуле, подставив необходимые значения:
    • [ S_{n} = frac {1-512*2}{1-2} =1023 ]

    • Проверим по второй формуле:
    • [ S_{n} = 1 * frac {1-2^{10}}{1-2}=1023 ]

    • Так как в результате на экран выводится s, то ответ 1023.

    Программирование: массивы и матрицы

    Наибольшее или наименьшее значение переменной s (сумматор)

    Досрочный экзамен 2020 г., вариант 1:

    В программе используется одномерный целочисленный массив A с индексами от 0 до 11. Значения элементов массива A[i] приведены в таблице.

    i 0 1 2 3 4 5 6 7 8 9 10 11
    A[i] 14 13 15 8 4 12 30 21 22 16 5 9

    Определите значение переменной s после выполнения следующего фрагмента этой программы

    Язык программирования Паскаль:

    s := 0;
    n := 1;
    for i := 0 to 11 do
     if A[i] > A[n] then
      s := s + A[i] + i
     else
      A[n] := A[i];
    Бейсик:

    s = 0
    n = 1
    FOR i = 0 TO 11
     IF A(i) > A(n) THEN
       s = s + A(i) + i
     ELSE
       A(n) = A(i)
     END IF
    NEXT i
    Python:

    s = 0
    n = 1
    for i in range(0, 12):
     if A[i] > A[n]:
       s += A[i] + i
     else:
       A[n] = A[i]
    С++:

    s = 0;
    n = 1;
    for (int i = 0; i < 12; i++)
    {
     if (A[i] > A[n])
       s += A[i] + i;
     else
       A[n] = A[i];
    }

    Ответ: 202

    Показать решение:

    Результат: 202

    📹 Видео


    6_16:

    В программе описан одномерный целочисленный массив А с индексами от 0 до 10.

    Язык программирования Паскаль:

    s:=0;
    n:=10;
    for i:=0 to n-1 do begin
      s:= s + A[i] + A[i+1]
    end;

    В начале выполнения этого фрагмента в массиве находились двухзначные четные натуральные числа.

      
    Какое наибольшее значение может иметь переменная s после выполнения данной программы?

    Ответ: 1960

    Показать решение:

    Рассмотрим алгоритм фрагмента программы:

    • Цикл выполняется 10 раз: от 0 до 9 (т.к. n-1).
    • В цикле повторяется операция, суммирующая два подряд идущих элемента массива, — текущего и следующего:
    • A[i] + A[i+1]
    • Данная сумма накапливается в переменной s, значение которой требуется узнать в задаче.
    • Поскольку по заданию необходимо найти наибольшее значение переменной s, и по заданию элементы массива — двухзначные четные натуральные числа, то представим, что все элементы равны самому большому двухзначному четному числу — 98. Это будет оптимальным вариантом.
    • В первый проход цикла получим:
    • s = 0 + 98 + 98 = 196
    • Полученная сумма будет каждый проход цикла увеличиваться на то же самое число (196):
    • s = 196 + 98 + 98
    • Так как проходов (итераций) цикла 10, то получим:
    • 196 * 10 = 1960

    📹 Видео


    6_17:

    В программе описан одномерный целочисленный массив А с индексами от 0 до 10.

    Язык программирования Паскаль:

    s:=1;
    n:=10;
    for i:=1 to 5 do begin
      s:= s * A[i] * A[n-i+1]
    end;

    В начале выполнения этого фрагмента в массиве находились однозначные четные натуральные числа.

      
    Какое наименьшее значение может иметь переменная s после выполнения данной программы?

    Ответ: 1024

    Показать решение:

    Рассмотрим алгоритм фрагмента программы:

    • Цикл выполняется 5 раз: от 1 до 5.
    • В цикле повторяется операция произведения двух элементов массива:
    • A[i] * A[n-i+1]
    • Определим, какие элементы перемножаются, подставив для n и i конкретные значения:
    • 1 шаг: A[1]*A[10]
      2 шаг: A[2]*A[9]
      3 шаг: A[3]*A[8]
      4 шаг: A[4]*A[7]
      5 шаг: A[5]*A[6]
      
    • Результат каждой операции умножения накапливается в переменной s, значение которой и требуется найти.
    • Поскольку в s накапливается произведение элементов массива, а по заданию элементы — однозначные четные натуральные числа, то представим, что в массиве все элементы равны самому малому однозначному четному числу — 2. Это будет оптимальным вариантом, т.к. по заданию, необходимо определить наименьшее значение.
    • В первый проход цикла получим:
    • s = 1 * 2 * 2 = 4
    • Полученное произведение будет каждый проход цикла перемножаться на предыдущее значение (4 — в первом шаге, 16 — во втором шаге и т.п.):
    • s = 4 * 2 * 2 = 16
      ...
      
    • Так как проходов цикла 5, то получим:
    • 45 = 1024

    📹 Видео


    Перестановка в массиве. Определить значение переменной

    6 (19) задание. Демоверсия ЕГЭ 2018 информатика:

    В программе используется одномерный целочисленный массив A с индексами от 0 до 9. Значения элементов равны 3, 0, 4, 6, 5, 1, 8, 2, 9, 7 соответственно, т.е. A[0] = 3, A[1] = 0 и т.д.

    Определите значение переменной c после выполнения следующего фрагмента этой программы:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    c := 0;
    for i := 1 to 9 do
     if A[i-1] > A[i] then
     begin
       c := c + 1;
       t := A[i];
       A[i] := A[i-1];
       A[i-1] := t;
     end;

    Ответ: 5

    Показать решение:

    Результат: 5

    📹 Видео


    6_19:

    В программе используется одномерный целочисленный массив A с индексами от 0 до 9. Значения элементов равны 1, 3, 4, 7, 2, 9, 1, 2, 3, 0 соответственно, т.е. A[0] = 1, A[1] = 3 и т.д.

    Определите значение переменной c после выполнения следующего фрагмента этой программы:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    c := 0;
    for i := 1 to 9 do
     if A[i] > A[0] then
     begin
       c := c + 1;
       t := A[i];
       A[i] := A[0];
       A[0] := 2*t;
     end;

    Ответ: 2

    Показать решение:

    • Рассмотрим изменение всех переменных и элементов массива для каждой итерации (прохода) цикла:
    • 1 2 3 4 5 6 7 8 9
      i 1 2 3 4 5 6 7 8 9
      if 3>4
      true
      4>6
      false
      7>6
      true
      2>14
      false
      9>14
      false
      1>14
      false
      2>14
      false
      3>14
      false
      0>14
      false
      c 1 2
      t 3 7
      A[i] 1 6
      A[0] 6 14

    📹 Видео


    6_20:

    В программе используется одномерный целочисленный массив A с индексами от 0 до 9. Значения элементов равны 0, 7, 1, 3, 2, 1, 8, 9, 6, 3 соответственно, т.е. A[0] = 0, A[1] = 7 и т.д.

    Определите значение переменной j после выполнения следующего фрагмента этой программы:

    1
    2
    3
    4
    5
    6
    7
    8
    
    j:=9;
    while A[j] + A[j-1] > 4 do
     begin
      t:=A[j];
      A[j]:=A[j-1];
      A[j-1]:=t;
      j:=j-1;
     end;

    Ответ: 6

    Показать решение:

    • В задании используется цикл while — с предусловием. Такой цикл выполняется пока условие истинно.
    • В условии цикла сумма каждого элемента массива с предыдущим, начиная с девятого (j=9), сравнивается с числом 4: если сумма элементов больше 4 то цикл выполняется.
    • Для первой итерации цикла имеем:
      while A[9] + A[8] > 4 do
      ...
      
    • Как только встретится сумма элементов, которая меньше либо равна четырем, цикл прекратит свою работу.
    • В цикле происходит обмен значений двух элементов массива, сумма которых рассматривается в условии цикла (через переменную t). Кроме того, происходит уменьшение счетчика цикла, чтобы осуществился переход к следующему элементу массива (j:=j-1).
    • Таким образом, надо узнать сумму элементов, начиная с элементов A[9]+A[8], затем A[8]+A[7] и т.д.:
    • A[9]+A[8] = 3+6 > 4 - да, значит обмен: A[9]=6 A[8]=3, j=8
      A[8]+A[7] = 3+9 > 4 - да, значит обмен: A[8]=9 A[7]=3, j=7
      A[7]+A[6] = 3+8 > 4 - да, значит обмен: A[7]=8 A[6]=3, j=6
      A[6]+A[5] = 3+1 > 4 - нет, цикл прекращает свою работу
      
    • Последнее значение счетчика j было равно 6.

    Разбор досрочного ЕГЭ по информатике 2019:

    В программе используется одномерный целочисленный массив A с индексами от 0 до 11. Значения элементов равны 20, 19, 33, 21, 42, 13, 12, 24, 4, 22, 6, 10, т.е. A[0]=20, A[1]=19 и т.д.

    Определите значение переменной s после выполнения следующего фрагмента этой программы:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
      n := 1;
      s := 1;
      for i := 1 to 11 do
        if A[i] < A[n] then begin
          s := s * i;
          t := A[i];
          A[i] := A[n];
          A[n] := t;
        end;

      
    Типовые задания для тренировки — демоверсия ЕГЭ информатика 2020

    Ответ: 240

    📹 Видео


    6_22:

    В программе используется одномерный целочисленный массив A с индексами от 0 до 9. Значения элементов равны 21, 16, 7, 12, 18, 3, 8, 13, 11, 17, т.е. A[0]=21, A[1]=16 и т.д.

    Определите значение переменной s после выполнения следующего фрагмента этой программы:
    Паскаль:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    s := 0;
    n := 4;
    for i:=0 to 9 do
      if A[i] <= A[n] then begin
        s := s + A[i];
        t := A[i];
        A[i] := A[n];
        A[n] := t;
        n := i mod 3;
      end;
    writeln(s);
    Бейсик:

    s=0: n=4
    FOR k=1 to 10  
        IF A(i) <= A(n) THEN
          s = s + A(i)
          t = A(i)
          A(i) = A(n)
          A(n) = t
          n = i MOD 3
        END IF
    NEXT k
    PRINT S
    END
    Python:

    s = 0
    n = 4
    for i in range(10):
      if A[i] <= A[n]:
        s = s + A[i]
        t = A[i]
        A[i] = A[n]
        A[n] = t
        n = i % 3
    print(s)
    С++:

    s = 0;
    n = 4;
    for (i=0; i<=9; i++)
      if (A[i]<=A[n])
        {
        s+=A[i];
        t=A[i];
        A[i]=A[n];
        A[n]=t;
        n=i%3;
        }
    cout << s;

      
    Типовые задания для тренировки

    Ответ: 75

    Показать решение:

    • Рассмотрим алгоритм. Построим трассировочную таблицу, каждая строка которой — очередная итерация цикла.
    • i <= ? 0 1 2 3 4 5 6 7 8 9 s n
      21 16 7 12 18 3 8 13 11 17 0 4
      0 21<=18
      нет
      21 18
      1 16<=18
      да
      16
      18
      18
      16
      16 1 mod 3 = 1
      2 7<=18
      да
      18
      7
      7
      18
      16+7=23 2 mod 3 = 2
      3 12<=18
      да
      18
      12
      12
      18
      23+12=35 3 mod 3 = 0
      4 16<=21
      да
      21
      16
      16
      21
      35+16=51 4 mod 3 = 1
      5 3<=7
      да
      7
      3
      3
      7
      51+3=54 5 mod 3 = 2
      6 8<=12
      да
      12
      8
      8
      12
      54+8=62 6 mod 3 = 0
      7 13<=16
      да
      16
      13
      13
      16
      62+13=75 7 mod 3 = 1
      8 нет 3 11
      9 нет 13 17
    • При последнем изменении s стало равным 75.

    📹 Видео


    6_23:

    В результате выполнения программы напечатано число 6.

      
    Какое наибольшее значение может иметь переменная S после выполнения программы?

    Паскаль:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
    var k, m, S, N: integer; 
        Dat: array[1..100] of integer; 
    begin 
      N:= 5; 
      m := 0; S := 0; 
      for k := 1 to N do      
        readln(Dat[k]); 
      for k := 1 to N do begin
        S := S + 2 * Dat[k];
        if  Dat[k]>m then
          begin
            m := Dat[k]
          end
      end; 
      writeln(m) 
    end.
    Бейсик:

    N=5
    m=0
    S=0
    FOR k=1 to N
       INPUT Dat(k) 
    NEXT k 
    FOR k=1 to N
        S = S + 2 * Dat(k)
        IF Dat(k) > m THEN
          m = Dat(k)
        END IF
    NEXT k
    PRINT m
    END
    Python:

    Dat = [0]*100
    N = 5
    m = S = 0
    for k in range(0, N):
        Dat[k] = int(input())
    for k in range(0, N):
        S += 2 * Dat[k]
        if Dat[k] > m:
            m = Dat[k]
    print(m)
    С++:

    #include <iostream> 
    using namespace std; 
     
    int main() {     
    int Dat[100];
    int N = 5;
    int k, m = 0, S = 0;
    for(k=0; k<N; k++)
       cin >> Dat[k];
    for(k=0; k<N; k++) {
       S += 2 * Dat[k];
       if (Dat[k]>m)
           m = Dat[k];
       }
    cout << m;
    return 0;
    }

    Ответ: 60

    Показать решение:

      Рассмотрим алгоритм.

    • В конце программы видим, что на экран выводится значение переменной m. То есть после выполнения всего алгоритма m станет равным 5. Запомним это.
    • Изначально переменная N равна значению 5:
    • В первом цикле формируются значения для пяти элементов массива:
    •   for k := 1 to N do      
          readln(Dat[k]);
    • Во втором цикле видим условие, в котором каждый из пяти элементов массива будет сравниваться с m. Если элемент больше m, то в m сохранится значение этого элемента:
    •    if  Dat[k]>m then
            begin
              m := Dat[k]
            end
    • Исходя из первого нашего пункта имеем, что наибольшее значение из пяти элементов массива — это значение 6. Так как в результате m = 6.
    • В цикле помимо условия находится сумматор, который суммирует 2 * Dat[k]. В задании необходимо определить наибольшее значение S, значит, выгодно, чтобы элементы массивов имели максимальное возможное значение.
    • Предположим, что все пять элементов массива равны 6. Тогда m после прохождения цикла останется равной 6. То есть результат будет верным.
    • Посчитаем S в цикле:
    • S := 0 + 2 * 6 + 2 * 6 + 2 * 6 + 2 * 6 + 2 * 6 = 12 * 5 = 60

    📹 Видео


    Автор материалов — Лада Борисовна Есакова.

    Для решения этой задачи нужно знать основные конструкции языка программирования:

    — Объявление переменных;

    — Оператор присваивания;

    — Оператор вывода;

    — Операторы цикла.

    Кроме этого, пригодятся математические формулы:

    n-го члена арифметической прогрессии ,

    суммы n членов геометрической прогрессии.

    Пример 1.

    За­пи­ши­те число, ко­то­рое будет на­пе­ча­та­но в ре­зуль­та­те вы­пол­не­ния про­грам­мы. Для Ва­ше­го удоб­ства про­грам­ма пред­став­ле­на на пяти язы­ках про­грам­ми­ро­ва­ния.

    Бей­сик

    Python

    DIM S, N AS INTEGER

    S = 47

    N = 1

    WHILE S > 0

    S = S — 9

    N = N + 4

    WEND

    PRINT(N)

    s = 47

    n = 1

    while s > 0:

    s = s — 9

    n = n + 4

    print(n)

    Пас­каль

    Ал­го­рит­ми­че­ский язык

    var s, n: integer;

    begin

    s := 47;

    n := 1;

    while s > 0 do

    begin

    s := s — 9;

    n := n + 4

    end;

    writeln(n)

    end.

    алг

    нач

    цел s, n

    s := 47

    n := 1

    нц пока s > 0

    s := s — 9

    n := n + 4

    кц

    вывод n

    кон

    Си

    #include <stdio.h>

    void main()

    {

    int s, n;

    s = 47;

    n = 1;

    while (s > 0) {

    s = s – 9;

    n = n + 4;

    }

    printf(«%dn», n);

    }

    Решение:

    Цикл while вы­пол­ня­ет­ся до тех пор, пока ис­тин­но усло­вие s > 0, т. е. пе­ре­мен­ная s опре­де­ля­ет, сколь­ко раз вы­пол­нит­ся цикл. По­сколь­ку из­на­чаль­но s = 47, а затем уменьшается на 9, цикл вы­пол­нит­ся 6 раз, сле­до­ва­тель­но, n = 6 · 4 + 1 = 25.

    Ответ: 25

    Пример 2.

    За­пи­ши­те число, ко­то­рое будет на­пе­ча­та­но в ре­зуль­та­те вы­пол­не­ния сле­ду­ю­щей про­грам­мы. Для Ва­ше­го удоб­ства про­грам­ма пред­став­ле­на на пяти язы­ках про­грам­ми­ро­ва­ния.

    Бей­сик

    Python

    DIM S, N AS INTEGER

    S = 0

    N = 0

    WHILE S < 111

    S = S + 8

    N = N + 2

    WEND

    PRINT N

    s = 0

    n = 0

    while s < 111:

    s = s + 8

    n = n + 2

    print(n)

    Пас­каль

    Ал­го­рит­ми­че­ский язык

    var s, n: integer;

    begin

    s := 0;

    n := 0;

    while s < 111 do

    begin

    s := s + 8;

    n := n + 2

    end;

    writeln(n)

    end.

    алг

    нач

    цел n, s

    n := 0

    s := 0

    нц пока s < 111

    s := s + 8

    n := n + 2

    кц

    вывод n

    кон

    Си

    #include

    int main()

    { int s = 0, n = 0;

    while (s < 111) { s = s + 8; n = n + 2; }

    printf(«%dn», n);

    return 0;

    }

    Решение:

    Цикл while вы­пол­ня­ет­ся до тех пор, пока ис­тин­но усло­вие s < 111, т. е. пе­ре­мен­ная s опре­де­ля­ет, сколь­ко раз вы­пол­нит­ся цикл. По­сколь­ку из­на­чаль­но s = 0, а затем увеличивается на 8, цикл вы­пол­нит­ся 14 раз, сле­до­ва­тель­но, n = 2 * 14 = 28.

    Ответ: 28

    Пример 3.

    За­пи­ши­те число, ко­то­рое будет на­пе­ча­та­но в ре­зуль­та­те вы­пол­не­ния про­грам­мы. Для Ва­ше­го удоб­ства про­грам­ма пред­став­ле­на на пяти язы­ках про­грам­ми­ро­ва­ния.

    Бей­сик

    Python

    DIM S, N AS INTEGER

    S = 301

    N = 0

    WHILE S > 0

    S = S — 10

    N = N + 2

    WEND

    PRINT N

    s = 301

    n = 0

    while s > 0:

    s = s — 10

    n = n + 2

    print(n)

    Пас­каль

    Ал­го­рит­ми­че­ский язык

    var s, n: integer;

    begin

    s := 301;

    n := 0;

    while s > 0 do

    begin

    s := s — 10;

    n := n + 2

    end;

    writeln(n)

    end.

    алг

    нач

    цел n, s

    s := 301

    n := 0

    нц пока s > 0

    s := s — 10

    n := n + 2

    кц

    вывод n

    кон

    Си

    #include <stdio.h>

    int main()

    {

    int s = 301, n = 0;

    while (s > 0) {

    s = s — 10;

    n = n + 2;

    }

    printf(«%dn», n);

    return 0;

    }

    Решение:

    За­ме­тим, что после 30 ите­ра­ций цикла s = 1, а n = 60. После 31 ите­ра­ции ста­нет s = -9, n = 62, и цикл пре­кра­тит­ся.

    Ответ: 62

    Благодарим за то, что пользуйтесь нашими публикациями.
    Информация на странице «Задача №8. Анализ программы с циклами.» подготовлена нашими авторами специально, чтобы помочь вам в освоении предмета и подготовке к экзаменам.
    Чтобы успешно сдать необходимые и поступить в высшее учебное заведение или колледж нужно использовать все инструменты: учеба, контрольные, олимпиады, онлайн-лекции, видеоуроки, сборники заданий.
    Также вы можете воспользоваться другими материалами из данного раздела.

    Публикация обновлена:
    08.05.2023

    Понравилась статья? Поделить с друзьями:
  • Как найти свой пентакль
  • Как найти больше подписчиков в инстаграме
  • Как найти мою ссылку в инстаграме
  • Как найти сохраненные черновики в инстаграм
  • Как найти длину высоты треугольника на плоскости