Консультация № 138841
31.05.2008, 23:43
0.00 руб.
0 2 2
Здравствуйте уважаемые эксперты!Помогите пожалуйста решить эти задачи, мне они нужны для сдачи госэкзамена.

2. Разработайте программу, определяющую порядок и сумму цифр заданного натурального числа.
3. Дано натуральное число n. Разработайте программу для получения нового числа переставлением цифр исходного числа в обратном порядке.
4. Дан массив целых положительных и отрицательных чисел из n элементов. Разработайте программу, меняющую первый отрицательный элемент с последним элементом массива.
5. Дан двумерный массив размерности n*m. Разработайте программу поиска номера строки и столбца, на пересечении которых находится минимальный элемент.
Спасибо.

Обсуждение

Неизвестный
01.06.2008, 00:25
общий
это ответ
<font color=red><b>!!!</b></font>
Здравствуйте, Азарова!
Набросал задачки 3 и 4.

P.S. Конечно не моё дело, но задачки на "госы" не оч тянут ;)<p><fieldset style=‘background-color:#EFEFEF; width:80%; border:red 1px solid; padding:10px;‘ class=fieldset><font color=red><i><b> i:=length(IntToStr(a))-1;</b>
Для Pascal-я данная запись <b>неверна</b>, поскольку функция <b>IntToStr</b> НЕ определена.
<font color=green><b>Правильно будет так:
str(a, s);
i:=length(s)-1;
где s:string; </b></fotn></i>
-----
</font><font color=#777777 size=1><b>• Отредактировал: <a href=http://rusfaq.ru/info/user/14422 target=_blank>Gh0stik</a></b> (Академик)
<b>• Дата редактирования:</b> 01.06.2008, 00:40 (MCK)</font></fieldset>

Приложение:
#3 var i,a: integer; rez: real; begin rez := 0; readln(a); {считываем число} i:=length(IntToStr(a))-1; {идём на хитрость - определяем его размер, переведя число в строку, и применив функцию length()} Repeat {создаём цикл} rez := rez + (a mod 10)*exp(i*ln(10)); {ответ задачи формируем так: берём отстаток от деления и унмножаем на 10, возведённое в степень i. полученное число прибавляем к результату} a := a div 10; {целочисленно делим исходное число на 10 - таким образом мы убираем из числа последнюю цифру} dec(i); {уменьшаем счётчик на единичку} Until a<1; {цикл завершаем тогда, когда исходное число станет меньше единицы} writeln(rez:1:0); {выводим результат на экран} readln; end. #4 const n = 5; {количество элементов массива} var i, a: integer; {вспомогательные переменные} ms: array [1..n] of integer; {массив} begin randomize; {включаем генератор случайных чисел} a:=-1; {инициализируем переменную, в которой потом будет храниться номер первого отрицательного элемента в массиве} for i:=1 to n do begin ms[i]:=random(10) - 5; {числа генерируются в диапазоне [-5, 4]} write(ms[i]:4); {Выводим сгенерированный элемент на экран} if ms[i]<0 then {если число меньше нуля} if a=-1 then a:=i; {если нам ещё не встречался отрицательный элемент, то запомним его номер} end; i:=ms[a]; {меняем заданные элементы местами} ms[a]:=ms[n]; ms[n]:=i; writeln; for i:=1 to n do write(ms[i]:4); {выводим результат на экран} readln; end.
давно
Профессор
401888
1232
01.06.2008, 11:48
общий
это ответ
Здравствуйте, Азарова!
По задаче №2 я не понял, что такое порядок цифр, это или их разряд, или номер по порядку с начала, или степень числа 10. Если уточните дополню программы. Сделал в двух вариантах, чисто математически для чисел из диапазонов Longint, и с помощью строк, для чисел до 255 знаков. Второй вариант предпочтительней, т.к. не надо задумываться о длине вводимого числа.
В приложении также решение задачи №5.


Приложение:
Задача 2. Вариант 1.uses crt;var n:longint; u,sum:byte;beginclrscr;write(‘n=‘);readln(n);sum:=0;while n>0 do begin u:=n mod 10;{отделяем последнюю текущую цифру} sum:=sum+u; {прибавляем ее} n:=n div 10; {берем число без последней цифры} end;writeln(‘Summa cifr=‘,sum);readln;end.Вариант 2.uses crt;var s:string; i,sum,t:word; c:integer;beginclrscr;write(‘Vvedite chislo: ‘);readln(s);sum:=0;for i:=1 to length(s)do begin val(s[i],t,c); {преобразуем символ в цифру} sum:=sum+t; {прибавляем ее} end;writeln(‘Summa chifr=‘,sum);readlnend.Задача 5.uses crt;var n,m,i,j,min,imin,jmin:integer; a:array[1..50,1..50]of integer;beginclrscr;randomize;write(‘Vvedite kolichestvo strok n=‘);readln(n);write(‘Vvedite kolichestvo stolbcov m=‘);readln(m);for i:=1 to n do begin for j:=1 to m do begin a[i,j]:=random(10)-3; write(a[i,j]:3); end; writeln; end;readln;min:=a[1,1];imin:=1;jmin:=1;for i:=1 to n dofor j:=1 to m doif a[i,j]<min then begin min:=a[i,j]; {минимум} imin:=i; {номер строки} jmin:=j; {номер столбца} end;writeln(‘Minimalnyj element v stroke ‘,imin,‘ v stolbce ‘,jmin);readlnend.
Форма ответа