Определите значение переменной c после выполнения следующего фрагмента программы: a := -2; b := -3; a := b + a*3; if a < b then c := a - b else c := b - a;
Полный текст программы на языке Си (все пояснения в коде)
#include<stdio.h> #include<locale.h> int main() { setlocale(LC_ALL, "Ru");//необходимо исключительно для корректного отображения русского текста в консоли int h[16]; //инициализируем целочисленный одномерный массив с 16 элементами printf("Введите данные о росте 16 учеников\n"); for(int x = 0; x < 16; x++){ //пользователь вводит информацию о всех 16 учениках scanf("%i\n", &h[x]); } int max = h[0]; //переменная для поиска максимального роста int maxcount = 0; //переменная для подсчета количества учеников с максимальным ростом for(int y = 0; y < 2;y++){ //первый "виток" цикла, который проходит 2 раза. Это нужно для корректного определения количества учеников с максимальным ростом maxcount = 0; for(int x = 0; x < 16; x++){ //в этом блоке происходит подсчет максимального роста и количества учеников if(h[x] > max){ max = h[x]; //рост } if(h[x] == max) { maxcount++; //кол-во } } } printf("Максимальный найденный рост - %i\nКоличество учеников с максимальным ростом - %i\n", max,maxcount);//вывод на экран результата return 0 ; }
P.S. Приложил скриншот для лучшего понимания
yuliyastatsenko3894
24.08.2021
PascalABC.NET 3.3.5, сборка 1662 от 29.04.2018 Внимание! Если программа не работает, обновите версию!
procedure Input(var a:array of integer); begin a:=ReadArrInteger('Вводите через пробел рост в см:',a.Length) end;
procedure MyMax(a:array of integer; var mr:integer); begin mr:=a.Max end;
procedure KMax(a:array of integer; mx:integer; var km:integer); begin km:=a.Where(t->t=mx).Count end;
begin var n:=ReadInteger('Количество учеников:'); var r:=new integer[n]; Input(r); var maxR,kol:integer; MyMax(r,maxR); KMax(r,maxR,kol); Writeln('Максимальный рост ',maxR,' имеют ',kol,' чел.') end.
Пример Количество учеников: 5 Вводите через пробел рост в см: 170 168 171 159 171 Максимальный рост 171 имеют 2 чел.
На самом деле, это задание - прекрасный пример того, как НЕ НУЖНО использовать процедуры. Потому что без процедур эта же задача решается гораздо короче, занимает меньше памяти и быстрее работает. Ниже - текст такой программы в качестве иллюстрации написанного.
begin var a:=ReadArrInteger('Вводите через пробел рост в см:', ReadInteger('Количество учеников:')); var maxR:=a.Max; var kol:=a.Where(t->t=maxR).Count; Writeln('Максимальный рост ',maxR,' имеют ',kol,' чел.') end.
Ответить на вопрос
Поделитесь своими знаниями, ответьте на вопрос:
Определите значение переменной c после выполнения следующего фрагмента программы: a := -2; b := -3; a := b + a*3; if a < b then c := a - b else c := b - a;
-6
Объяснение:
a = -3 + -2 * 3 = -9
и теперь у нас a = -9, а b = -3
и мы видим что у нас a(-9) меньше b(-3)
поэтому выполняется if
и c = -9 - -3 = -6
результат: -6