| 
        
    
		
			| 
			
        		| 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
 |  |  |