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