ilya
Новичок
|
Помогите пожалуйста решить задачу: Заранее благодарен !! (Сообщение отредактировал ilya 17 окт. 2009 2:21)
|
Всего сообщений: 5 | Присоединился: октябрь 2009 | Отправлено: 17 окт. 2009 1:55 | IP
|
|
MaJlbBuHa
Новичок
|
Доброе время суток, найдите пожалуйста ошибку. Задача: Сформировать массив случайными числами из проиежутка [-9,18]. после первого четного элемента вставить элемент, равный количеству нечетных чисел Мой код: uses crt; var a:array [1..100] of integer; n,i,r,k:integer; begin clrscr; randomize; writeln('vvedite razmernoct massiva'); readln(n); For i:=1 to n do a:=random(17)-4; for i:=1 to n do Write(a[ i ]:3); k:=0; writeln; for i:=1 to n do begin if amod 2<>0 then k:=k+1; end; for i:=1 to n do if amod 2=0 then r:=a; a[r]:=k; for i:=n+1 downto 1 do begin if i>r then a[ i ]:=a[i-1]; end; for i:=1 to n+1 do begin write(a[ i ]:3); end; readln; end. Заранее спасибо (Сообщение отредактировал MaJlbBuHa 17 окт. 2009 23:31)
|
Всего сообщений: 48 | Присоединился: январь 2009 | Отправлено: 17 окт. 2009 23:29 | IP
|
|
webs
Новичок
|
Помогите пожалуйста с решением задачи: Составить программу вычисления произведения нечетных чисел, меньших 16.C использованием цикла while и с использованием цикла repeat
|
Всего сообщений: 3 | Присоединился: октябрь 2009 | Отправлено: 18 окт. 2009 12:00 | IP
|
|
SleepLess
Новичок
|
Помогите пожалуста,немогу решить.Вот условие: Дана действительная квадратная матрица порядка n. Найти наиболь- шее из значений элементов первой и последней строк.
|
Всего сообщений: 4 | Присоединился: октябрь 2009 | Отправлено: 18 окт. 2009 15:33 | IP
|
|
Dale
Участник
|
Цитата: MaJlbBuHa написал 17 окт. 2009 23:29 Доброе время суток, найдите пожалуйста ошибку.
uses crt; var a:array [1..100] of integer; n,i,r,k:integer; begin clrscr; randomize; writeln('vvedite razmernoct massiva'); readln(n); For i:=1 to n do a[ i ]:=random(17)-4;{неправильно} for i:=1 to n do Write(a[ i ]:3); k:=0; writeln; for i:=1 to n do begin if a[ i ]mod 2<>0 then k:=k+1; end; for i:=1 to n do if a[ i ] mod 2=0 then r:=a[ i ]; {в r получается последний четый элемент} a[r]:=k;{это что-то странное; r не индекс, а элемент} for i:=n+1 downto 1 do begin if i>r then a[ i ]:=a[i-1]; end;{а это зчем?} for i:=1 to n+1 do begin write(a[ i ]:3); end; readln; end.
|
Всего сообщений: 139 | Присоединился: май 2009 | Отправлено: 18 окт. 2009 16:06 | IP
|
|
Dale
Участник
|
MaJlbBuHa 1) J := Random(N) { 0 <= J < N } ; Поэтому random(17) даст нам числа от 0 до 16, а random(17)-4 даст нам от -4 до 12. Нам нужно от -9 до 18. random(18+9+1) , т.е. random(28) дает от 0 до 27. Вычитаем 9, получается от -9 до 18, что нам и надо. Общая формула получения случайных целых чисел в промежутке от a до b: x:=random(b-a+1)+a или в нашем случае a[ i ]:= random(28)-9 2)Как найти первый четный элемент? Предлагаю искать так: m:=1; while a[ m ] mod 2=0 do m:=m+1; Правда, есть один минус - зацикливание, в случае отсутствия четных элементов. Этого можно избежать: k:=1; while ((a[ k ] mod 2=0) and (k<=n)) do k:=k+1; 3) количество нечетных чисел у вас подсчитано верно: k:=0; for i:=1 to n do if a[ i ]mod 2<>0 then k:=k+1; 4)заменяем: a[m+1]:=k; Вроде все В итоге получилось:
Code Sample:
uses crt; var a:array[1..100] of integer; n,i,r,k:integer; begin clrscr; randomize; writeln('Введите размерность'); readln(n); if (n>100) then halt;{Размерность должна быть меньше 100} for i:=1 to n do a[ i ]:=random(28)-9; for i:=1 to n do write(a[ i ]:3); writeln; {Считаем количество нечетных элементов} k:=0; for i:=1 to n do if a[ i ] mod 2<>0 then k:=k+1; {Ищем первый нечетный элемент} r:=1; while (a[r] mod 2 = 0) and (r<=n) do r:=r+1; {Если первый нечетный элемент вдруг оказался последним, выходим:} if r=n then halt; {Заменяем} a[r+1]:=k; {Выводим результат:} for i:=1 to n do write(a[ i ]:3); readkey; end.
(Сообщение отредактировал Dale 19 окт. 2009 2:07)
|
Всего сообщений: 139 | Присоединился: май 2009 | Отправлено: 19 окт. 2009 0:29 | IP
|
|
MaJlbBuHa
Новичок
|
Dale спасибо огромное за разъяснения. Вы не заменимы)))
|
Всего сообщений: 48 | Присоединился: январь 2009 | Отправлено: 19 окт. 2009 1:14 | IP
|
|
Dale
Участник
|
Цитата: webs написал 18 окт. 2009 12:00 Помогите пожалуйста с решением задачи: Составить программу вычисления произведения нечетных чисел, меньших 16.C использованием цикла while и с использованием цикла repeat
Code Sample:
uses crt; var i,pr:longint; begin clrscr; i:=1; pr:=1; while i<16 do begin pr:=pr*i; i:=i+2; end; writeln(pr); readkey; end.
Code Sample:
uses crt; var i,pr:longint; begin clrscr; i:=1; pr:=1; repeat pr:=pr*i; i:=i+2; until i>=16; writeln(pr); readkey; end.
|
Всего сообщений: 139 | Присоединился: май 2009 | Отправлено: 19 окт. 2009 3:22 | IP
|
|
Dale
Участник
|
Цитата: SleepLess написал 18 окт. 2009 15:33 Помогите пожалуста,немогу решить.Вот условие: Дана действительная квадратная матрица порядка n. Найти наиболь- шее из значений элементов первой и последней строк.
Code Sample:
uses crt; var matr:array[1..100,1..100] of integer; n,i,j,ind_i,ind_j:integer; begin clrscr; writeln('Введите размерность матрицы(до 100)'); readln(n); {Заполняем матрицу случайными числами} randomize; for i:=1 to n do for j:=1 to n do matr[i,j]:=random(100); writeln('Вот наша матрица:'); for i:=1 to n do begin writeln; for j:=1 to n do write(matr[i,j]:4); end; {ищем максимум первой строки} ind_i:=1;ind_j:=1; for j:=1 to n do if matr[1,j]>matr[1,ind_j] then ind_j:=j; {разбираемся с последней строкой} for j:=1 to n do if matr[n,j]>matr[ind_i,ind_j] then begin ind_i:=n; ind_j:=j; end; {Выводим результат} writeln; writeln('максимальный элемент находится в ',ind_i,'-ой строке, ',ind_j,'-ом столбце и равен ',matr[ind_i,ind_j]); readkey; end.
|
Всего сообщений: 139 | Присоединился: май 2009 | Отправлено: 19 окт. 2009 3:48 | IP
|
|
webs
Новичок
|
Спасибо большое .!!!
|
Всего сообщений: 3 | Присоединился: октябрь 2009 | Отправлено: 20 окт. 2009 14:37 | IP
|
|
|