Форум » Массивы, сортировка, работа с файлами » Задача С2 » Ответить

Задача С2

Николай: Дан прямоугольный массив целых положительных чисел 10 х 20. Опишите на русском языке или на одном из языков программирования алгоритм поиска строки с наименьшей суммой элемен-тов. Вывести на печать номер строки и сумму ее элементов. Предполагается, что такая строка единственна.

Ответов - 16, стр: 1 2 All

Поляков: Пожалуйста сформулируйте вопрос.

1ро4ка_двадва88: Проверьте меня const N=10; const M=20; var a:array[1..N,1..M] of integer; min, sum, i, k, g, t, stroka:integer; begin {вводим массив N x M} sum:=0; for i:=1 to M do sum:=sum+a[1,i]; {сумма элементов первой строки} for g:=2 to N do for t:=1 to M do while g<>g+1 do {-------------- вот тут не уверен, будет ли программа полностью все строки проверять или же остановится на проверке одной заданной строки} k:=a[g,t]+k; if k<sum then begin sum:=k; stroka:=g; end; writeln(stroka); writeln(sum); end.

oval: 1ро4ка_двадва88 пишет: g<>g+1 при каком g это условие станет ложным? for g:=2 to N do for t:=1 to M do while g<>g+1 do k:=a[g,t]+k; в k будет записана сумма всех элементов массива со 2 строки по N я бы оценила это решение в 0 баллов [pre2] for g:=2 to N do begin for t:=1 to M do while g<>g+1 do k:=a[g,t]+k; if k<sum then begin sum:=k; stroka:=g; nd; end;[/pre2]


1ро4ка_двадва88: Понял, спасибо. Но, насколько я могу анализировать ситуацию с егэ 2012, задач на двумерные массивы не будет. Вообще, очень странная ситуация сложилась в этом году. Пришел какой то http://www.youtube.com/watch?v=nyClYuq3_9Q на место куратора ЕГЭ по информатике, перевернул все с ног на голову, никаких пособий для подготовки к экзамену не выпустил, из того что мы имеем на данный момент (за неделю до экзамена) есть всего лишь 1 демо работа и 1 тренировочная, по которым можно только догадываться, что же будет ждать школоло 28 мая

Viken: C2 30 min:=1000; for i:=1 to N do begin if (A<min) and ((A>=100) and (A<=999)) then begin min:=A; writeln(min); end else writeln('Нету трехзначных чисел'); end. Правильно?В ответах немного по-другому.

oval: Viken пишет: [pre2] min:=1000; for i:=1 to N do begin if (A[ i]<min) and ((A[ i]>=100) and (A[ i]<=999)) then begin min:=A[ i]; if min<> 1000 then writeln(min); end else writeln('Нету трехзначных чисел'); end.[/pre2] вы свою программу запустите, забавные вещи она будет выдавать :) если очередное число меньше минимума, то мы его печатаем, а иначе печатаем нет трехзначных чисел, я думаю это решение 0 баллав Почему min:=9999(или другое любое число,вне данного диапазона),а не min:=1000? потому-что 9999 и есть любое число С2 27 ............. а какое отношение это имеет к 27 задаче? видимо в 4 утра лучше спать

Viken: C2 28 Почему min:=9999(или другое любое число,вне данного диапазона),а не min:=1000?

Viken: С2 27 a>=0 не будет же считаться за ошибку?в ответах стоит знак ">"

Viken: С2 25 min:=999 for i:=1 to N do if (a>=0) and (a<=10000) and (a>=100) and (a<=min) then min:=a; writeln(min) else writeln('Таких чисел нет'); end. Правильно?В ответах по-другому немного.

1ро4ка_двадва88: Viken пишет: С2 25 min:=999 for i:=1 to N do if (a>=0) and (a<=10000) and (a>=100) and (a<=min) then min:=a; writeln(min) else writeln('Таких чисел нет'); end. Правильно?В ответах по-другому немного. условия, выделенные жирным проверять не надо. изначально вы задали в минимум наибольшее трехзначное число - это неправильно. 999 может быть числом, которое мы ищем, а у вас оно заведомо отбрасывается. нет, у вас оно получает ПРИОРИТЕТ во всей программе, т.к если последный встретившийся 3-х значный элемент будет 999, то он и будет минимумом - ошибка

oval: Viken пишет: for i:=1 to N do if (a>=0) and (a<=10000) and (a>=100) and (a<=min) then min:=a; writeln(min) else writeln('Таких чисел нет'); end. для начала, программа не от компилируется, прежде чем писать сюда попробуйте прогнать ее на компьютере

Zoo: Не знаю, можно ли здесь размещать ссылки. Тут есть несколько тренировочных и диагностических работ за 2012 год: http://www.alleng.ru/d/comp/com_ege-tr.htm Простите меня, если что, Константин Юрьевич :)

Ксения: С2 26 Можно ли было в этой задаче вместо такой проверки (из ответов): for j:=1 to a[i] do if a[i] mod j = 0 then k:= k + 1; сделать такую: for j:=1 to 10 do if a[i] mod j = 0 then k:= k + 1; Нужно ли в решении приводить математическое доказательство или писать какой-нибудь комментарий?

Поляков: Ксения пишет: сделать такую: for j:=1 to 10 do if a mod j = 0 then k:= k + 1; Да, учитывая, что все значения не больше 100. Нужно ли в решении приводить математическое доказательство или писать какой-нибудь комментарий? Вообще говоря, не обязательно. Но, возможно, это облегчит эксперту понимание вашей мысли.

Den: ребят как правильней оформлять с2?: 1)k:=0; for i:=1 to N do begin if (10<=a[i]) and (a[i]<=99) and ((a[i] mod 10 = 9) or (a[i] div 10=9)) then k:=k+1; end; writeln(k); или 2)k:=0; for i:=1 to N do if (10<=a[i]) and (a[i]<=99) and ((a[i] mod 10 = 9) or (a[i] div 10=9)) then k:=k+1; writeln(k); при вот таком условии:Дан целочисленный массив из 30 элементов. Элементы массива могут принимать целые значения от 0 до 1000. Опишите на русском языке или на одном из языков программирования алгоритм, позволяющий найти и вывести количество элементов массива, десятичная запись которых содержит ровно 2 цифры, причём хотя бы одна из этих цифр – цифра 9..

oval: Den пишет: ребят как правильней оформлять с2?: абсолютно все равно, по синтаксису после do может стоять один оператор, это if , а взяли вы его в операторные скобки или нет роли не играет, другое дело если по логике программы нам необходимо после do сделать два действия, например, что-то вычислить и напечатать, тогда begin - end обязательны



полная версия страницы