![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() Здравствуйте, помогите пожалуйста решить задачу в паскале. Я даже не понял условия задачи самой, которая была дана для курсовой работы. Помогите хотя бы понять, что нужно делать в этих заданиях, если вы поняли.
Задачи: а) Сформировать из столбцов В, не содержащих равных элементов, матрицу С размером m х k, где k <= n - количество таких столбцов; б) в матрице С вычислить суммы элементов строк, номера которых определяются номерами нулевых элементов заданного вектора. |
#2
|
|||
|
|||
![]() Ну, если не ошибаюсь, то все довольно просто.
Задача А: Тебе задана матрица B (m x n). Надо найти в ней столбцы без одинаковых элементов и "собрать" из них матрицу C (m x k). k действительно будет меньше или равно n, а высота останется той же (m). Задача Б: Из полученной в задаче А матрицы и вектора (одномерный массив, еще одни входные данные для второй задачи) посчитать суммы элементов тех строк, номера которых совпадают с номерами элементамов вектора, равными 0. Более ясно объяснить не могу... Для написания кода надо понимать какой диалект языка можно использовать. Например, в классическом ПАСКАЛе нет динамических массивов, соотв. задачи придется решать либо используя статические массивы, т.е. фиксировать m и n, либо городить огород с указателями. В Дельфи динамические массивы есть, соотв. можно написать универсальный код под любые (с разумным ограничением) размеры входных данных, да и интерфейс для ввода данных можно нарисовать более удобный. |
#3
|
|||
|
|||
![]() Ой простите, я случайно перепутал задания. Вот мои задания, я до сих пор не понял как сделать это, и что именно нужно делать.
Сформировать из строк B с нулевым первым элементом матрицу C размером kxn, где k<=m-количество этих строк. Я так понял что, есть массив с типом string, и тутад надо ввести числа через пробел, и те строки в которых первое число равно 0, то его записать в массив с размером. А вот размер какой я непонял, не понял что такое k, n и m я так понял размер матрицы, n-строка,m-столбец. Последний раз редактировалось BlackMonsta, 21.03.2015 в 11:43. |
#4
|
|||
|
|||
![]() Кто нибудь знает?
|
#5
|
|||
|
|||
![]() Ну, знаем. И что?
m, n и k - это условные размеры массивов (кол-во строк или столбцов). И с чего ты решил, что это массив строк (в смысле String)? Код:
// Delphi var B : Array Of Array Of Integer; Код:
(* Pascal *) const m = 100; n = 100; var B : Array [1..m,1..n] Of Integer; Теперь о k. Т.к. ты формируешь новый массив C из строк исходного массива B, и туда войдут только строки, у которых первый элемено = 0, то общее кол-во строк (k) создаваемого массива будет меньше или равно (если все строки начинаются с 0), чем у исходного массива, т.е. k <= m, но заранее ты кол-во таких строк не знаешь, соответсвнно, они обозначаются буквой (k), а не конкретным числом. ЗЫ. В вышеприведенном тексте термин "строка" обозначает горизонтальный ряд (строку) прямоугольного массива, т.е., фактически, одномерный массив, а не тип данных String, как ты, видимо, подумал. Есть мнение, что в постановке задачи термин "строка" имеет тот же смысл. ЗЗЫ. Если такие проблемы с пониманием простейших стандартных задач, то может не связываться с программированием и поискать себе другую область деятельности? |
#6
|
|||
|
|||
![]() Получается код будет такой?
Код:
var B,C:array[1..50,1..50] of integer; a:array[1..50] of integer; i,j,ib,jb,k:integer; begin write('Введите кол-во строк: '); readln(ib); write('Введите количество элементов в строке: '); readln(jb); k:=0; for i:=1 to ib do begin for j:=1 to jb do begin b[i,j]:= random(0,2); write(b[i,j]:3); end; if b[i,1]=0 then begin k:=k+1; a[k]:=i; end; writeln; end; for i:=1 to k do begin for j:=1 to jb do begin c[i,j]:= b[a[i],j]; end; end; writeln('Матрица C:'); for i:=1 to k do begin for j:=1 to jb do begin write(C[i,j]:3); end; writeln; end; end. |