| 
        
    
		
			| 
			
        		| Talon 
 
   
   Новичок
 |             Вообщем ввожу 2 массива 2мерных, нужно в каждом подсчитать количество нулей и сравнив это количество сформировать 2 новых одномерных массива
 переписав в первый массив с наименьшим числом нулей а в 2 массив с наибольшим числом нулей!
 Так вот массивы задал число нулей нашел, теперь никак не могу из 2 мерного сформироватьодномерный...при этом сравнив еще...процедуры у нас сл лекция их использовать нельзя
   
 program mas;
 uses crt;
 var a:array [1..100, 1..100] of integer;
 B:array [1..100, 1..100] of integer;
 C:array [1..100] of integer;
 D:array [1..100] of integer;
 m,n,q,w,i,j,k,p,u,z,y,t:integer;
 begin
 clrscr;
 writeln ('vvedite razmer matrici 1:');
 readln (m,n);
 writeln ('vvedite razmer matrici 2:');
 readln (q,w);
 writeln ('vvedite elementi matrici 1:');
 for i:=1 to m do
 for j:=1 to n do
 begin
 write ('A[',i,',',j,']= ');
 readln (A[i,j]);
 end;
 writeln ('vvedite elementi matrici 2:');
 for k:=1 to q do
 for p:=1 to w do
 begin
 write ('B[',k,',',p,']= ');
 readln (B[k,p]);
 end;
 
 writeln('matrica A:');
 for i:=1 to m do
 begin
 for j:=1 to n do
 write(a[i,j], '   ');
 writeln;
 end;
 writeln('matrica b:');
 for k:=1 to q do
 begin
 for p:=1 to w do
 write(b[k,p], '   ');
 writeln;
 end;
 u:=0; z:=0;
 for i:=1 to m do
 for j:=1 to n do
 begin
 if a[i,j]=0 then u:=u+1;
 end;
 for k:=1 to q do
 for p:=1 to w do
 begin
 if b[k,p]=0 then z:=z+1;
 end;
 writeln ('u=', u, 'z=', z);
 y:=1;
 t:=1;
 if u<z then
 begin
 for i:=1 to m do
 for j:=1 to n do
 c[y]:=a[i,j];
 y:=y+1;
 end Else
 if u>z then
 begin
 for k:=1 to q do
 for p:=1 to w do
 d[t]:=b[k,p];
 t:=t+1;
 end;
 writeln('massiv c naibolshim 4islom 0');
 For t:=1 to q*w do write (c[t]);
 writeln('massiv c naimenshim 4islom 0');
 For y:=1 to m*n do write (c[t]);
 
 
 readkey;
 end.
 
 |  
				| Всего сообщений: 1 | Присоединился: май 2008 | Отправлено: 17 мая 2008 11:19 | IP
 |  |  
			| 
			
        		| Guest 
 
   
   Новичок
 |           помогите пожалуйста с использованием односвязного списка удалить последний элемент чё то не получаеться
 |  
				| Всего сообщений: Нет | Присоединился: Never | Отправлено: 19 мая 2008 14:08 | IP
 |  |  
			| 
			
        		| mork 
 
   
   Новичок
 |             Огромная просьба, помогите плиииз с задачей по паскалю, срочно нужно сдавать, никак не могу сделать....
 Тема: Обработка записей.
 Вот сама задача:
 На плоскости заданы множество точек A и множество окружностей B (каждая окружность задается значениями координат центра и радиуса). Найти две такие различные точки A, что проходящая через них прямая пересекается с максимальным количество окружностей из B.
 
 заранее спасибо, очень надо.
   |  
				| Всего сообщений: 1 | Присоединился: май 2008 | Отправлено: 21 мая 2008 0:18 | IP
 |  |  
			| 
			
        		| KMA   
 
   
   Долгожитель
 |              
 помогите пожалуйста с использованием односвязного списка удалить последний элемент чё то не получаеться
 
 
 Ссылке на предпоследний элемент назначаешь NULL и последний элемент у тебя удаляется.
   |  
				| Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 22 мая 2008 10:37 | IP
 |  |  
			| 
			
        		| KMA   
 
   
   Долгожитель
 |              
 Вообщем ввожу 2 массива 2мерных, нужно в каждом подсчитать количество нулей и сравнив это количество сформировать 2 новых одномерных массива
 переписав в первый массив с наименьшим числом нулей а в 2 массив с наибольшим числом нулей!
 Так вот массивы задал число нулей нашел, теперь никак не могу из 2 мерного сформироватьодномерный...при этом сравнив еще...процедуры у нас сл лекция их использовать нельзя
 
 
 
 Ты неправильно делаешь в выделенной тобой области кода. Там не надо все воспринимать так сложно, вот примерно, как это должно выглядеть.
 
 
 Code Sample:
  var
 c: array [1..1000] of integer;
 d: array [1..1000] of integer;
 ...
 {я пропускаю ввод и подсчет нулей.
 пусть u это количество нулей массива A,
 z это количество нулей массива B}
 ...
 {сформируем одномерные массивы С соответствует А}
 t:=1;
 for i:=1 to m do
 for j:=1 to n do
 begin
 c[t]:=a[i, j];
 t:=t+1
 end;
 {D соответствует D}
 t:=1;
 for i:=1 to q do
 for j:=1 to w do
 begin
 d[t]:=b[i, j];
 t:=t+1;
 end;
 
 {теперь выведем массивы}
 if u>z
 then writeLn ('Массив с большим количеством нулей:')
 else writeLn ('Массив с меньшим количеством нулей:');
 for i:=1 to m*n do
 write (c[ i ], ' ');
 if u<=z
 then writeLn ('Массив с большим количеством нулей:')
 else writeLn ('Массив с меньшим количеством нулей:');
 for i:=1 to q*w do
 write (d[ i ], ' ');
 
 
 
 Вот собственно и все.
 |  
				| Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 22 мая 2008 10:54 | IP
 |  |  
			| 
			
        		| KMA   
 
   
   Долгожитель
 |              
 
 Написала программу но чёт не работает.
 Определить сумму и кол-во введённых чисел. При вводе Ai+1=Ai закончить работу.
 
 
 
 У тебя нет идеи в программе, поэтому у тебя и ошибка. Суть в следующем, ты должен сразу складывать числа и находить сумму.
 Это реализуется так.
 
 
 Code Sample:
  j:=0;
 summa:=0;
 old_i:=0;
 repeat
 old_i:=i; {запоминаем старое значение i}
 writeLn ('Введите число');
 readLn (i);
 inc (j);
 summa:=summa+i;
 until (old_i+1)=i;
 writeLn ('Сумма: ', summa, ' ', j, ' чисел');
 
 
 
 В условии у тебя указано не значение, а номера элементов, в данном случае, если у тебя встретятся два одинаковых введеных числа, то закончить ввод.
 Последнее число у меня так же считает, если необходимо чтобы не считал, после цикла вычти из суммы значение i.
 |  
				| Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 22 мая 2008 11:05 | IP
 |  |  
			| 
			
        		| osokina 
 
   
   Новичок
 |             Здравствуйте Помогите пожалуйста не получается с задачей Найти разницу между первым и последним целым числом из 10 случайных чисел, полученных в диапазоне от 0 до 100.большое спасибо!
 |  
				| Всего сообщений: 2 | Присоединился: май 2008 | Отправлено: 22 мая 2008 11:11 | IP
 |  |  
			| 
			
        		| KMA   
 
   
   Долгожитель
 |              
 Текст нужно ввести с клавиатуры. Пробовал прогонять val, но это ничего не дало. в полном тупике
 
 
 Daimer, все гораздо проще.
 
 1. Просматриваешь строку начиная с первого символа.
 2. Двигаешься по строке вправо на 1 символ. Если конец строки, то заканчиваешь цикл.
 3. Если встречается цифра, т. е. символ 0, 1, 2... 9, то переходишь к шагу 4, если нет, то идешь на шаг 2.
 4. Запоминаешь текущую позицию в строке, пусть это будет start_i.
 5. Заводишь счетчик цифр, пусть это будет count_digit<-1.
 6. Если следующий символ цифра, прибавляешь к count_digit 1, сдвигаешься на следующий символ по строке, идешь на шаг 6, если следующий символ не цифра, то идешь на шаг 7.
 7. Применяешь функцию val - начальное значение и количество символов числа тебе известно (start_i и count_digit соответственно). Полученное значение сохраняешь в переменной buf;
 8. Если buf>max, то max<-buf.
 9. Ставишь указатель строки на start_i+count_digit позицию. Возвращаешься в главный цикл, переходя на шаг 2.
 
 На выходе должен получить max.
 
 
 (Сообщение отредактировал KMA 22 мая 2008 11:21)
 |  
				| Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 22 мая 2008 11:20 | IP
 |  |  
			| 
			
        		| Admire 
 
   
   Новичок
 |             Помогите пожалуйста решить задачу: В 1985 году урожай ячменя составил 20 ц. с га. В среднем каждые два года урожай увеличивался на 5%. Определите через сколько лет урожайность достигнет 25 ц. с га.
 Надо использовать цикл While...
 Если поможете буду очень благодарен...
 |  
				| Всего сообщений: 2 | Присоединился: май 2008 | Отправлено: 22 мая 2008 19:33 | IP
 |  |  
			| 
			
        		| Spaun666 
 
   Новичок
 |                Человечество! Возникла проблема. Такая задача: Написать программу, с использованием вложенного цикла, которая выводит на экран таблицу
 a
 ab
 abc
 но вся фишка в том, что без использования string и ord. Сколько бьюсь,не получается. Мысли кончились
 |  
				| Всего сообщений: 3 | Присоединился: май 2008 | Отправлено: 22 мая 2008 22:18 | IP
 |  |  |