Форум
» Назад на решение задач по физике и термеху
Регистрация | Профиль | Войти | Забытый пароль | Присутствующие | Справка | Поиск

» Добро пожаловать, Гость: Войти | Регистрация
    Форум
    Информационные технологии
        Решение задач на Pascal. Форум 3.
Отметить все сообщения как прочитанные   [ Помощь ]
» Добро пожаловать на форум "Информационные технологии" «

Переход к теме
<< Назад Вперед >>
Несколько страниц [ 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 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 ]
Модераторы: paradise, KMA
  

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

Отправка ответа:
Имя пользователя   Вы зарегистрировались?
Пароль   Забыли пароль?
Сообщение

Использование HTML запрещено

Использование IkonCode разрешено

Смайлики разрешены

Опции отправки

Добавить подпись?
Получать ответы по e-mail?
Разрешить смайлики в этом сообщении?
Просмотреть сообщение перед отправкой? Да   Нет
 

Переход к теме
<< Назад Вперед >>
Несколько страниц [ 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 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 ]

Форум работает на скрипте © Ikonboard.com