IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Номер строки с минимальным числом элементов
REC0N
сообщение 3.03.2010 18:31
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 19
Пол: Мужской
Реальное имя: Миша

Репутация: -  0  +


Дана матрица NxN.
Помогите вывести номер строки с минимальным число элементов что равны заданному (заданое число вводит пользователь)
Итак, у меня выводит n строк и количество элементов и напротив каждой строки, как вывести лишь минимальную строку?
Вот что наработал:

program matryca;
uses crt;
const nmax=1000;
label 25;

var Matr:array[1..nmax,1..nmax] of integer;
Vec:array[1..nmax] of integer;
n,m,i,j,k,l,min : integer;

begin
25:
write ('Введите количество строк в матрице:');
readln (m);
write ('Введите количество столбцов в матрице:');
readln (n);
if m<>n then begin writeln('Матрица должна быть квадратная! ! !');goto 25; end;


// Ввод матрицы

writeln(' ');
writeln(' -------------------- ');
writeln(' Ввод матрицы ');
writeln(' -------------------- ');
writeln(' ');

for i:=1 to n do
for j:=1 to m do begin

write ('Введите элемент матрицы A(',i,';',j,'):');
readln (Matr[i,j]);
end;

// Вывод матрицы

for i:=1 to n do begin
write('(',i,'-я строка) ');
for j:=1 to m do
write(Matr[i,j],' ');
writeln;
end;

// Введення числа


write('Введите число: ');
read(k);

for i:=1 to n do begin vec[i]:=0;
for j:=1 to m do begin

if k=matr[i,j] then vec[i]:=vec[i]+1
end;


end;

for i:=1 to n do begin
write('Количество введенных пользователем символов в ', i,'-й строчке: ', vec [i]);
writeln;
end;

end.

P.S:Делал на PascalABC
dry.gif dry.gif dry.gif


Прикрепленные файлы
Прикрепленный файл  obch_prak_24.rar ( 664 байт ) Кол-во скачиваний: 114
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Client
сообщение 3.03.2010 18:49
Сообщение #2


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


Цитата
как вывести лишь минимальную строку?
Во втором массиве найди индекс минимального значения. Этот индекс будет номером нужной строки в матрице

Добавлено через 4 мин.
а зачем тебе матрица 1000*1000 элементов? Если матрица квадратная, зачем вводить кол-во строк и столбцов? И лучше убрать goto...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
REC0N
сообщение 3.03.2010 19:05
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 19
Пол: Мужской
Реальное имя: Миша

Репутация: -  0  +


Цитата(Client @ 3.03.2010 17:49) *

а зачем тебе матрица 1000*1000 элементов? Если матрица квадратная, зачем вводить кол-во строк и столбцов? И лучше убрать goto...

Я думаю не имеет значения какого размера матрица ... а на счет goto, каким образом проверить матрица квадратная, мне преподаватель введет другую матрицу (не квадратную) а у меня не будет проверки на квадратную матрицу и преподаватель мою прогу не примет: (
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Client
сообщение 3.03.2010 19:14
Сообщение #4


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


wrilte('Введите размер матрицы');
readln(n);
N-размер, т.е. у тебя будет матрица N*N. Что тут проверять?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
REC0N
сообщение 3.03.2010 19:23
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 19
Пол: Мужской
Реальное имя: Миша

Репутация: -  0  +


Цитата(Client @ 3.03.2010 18:14) *

N-размер, т.е. у тебя будет матрица N*N. Что тут проверять?

Немогу с тобой несогласитса, но у меня такой преподаватель что он скажет что за хрень и т.д. ,сделай проверку на то что матрица действительно квадратная
Так било в 1-м семестре mega_chok.gif mega_chok.gif

Подскажи как найти индекс минимального элемента (выдели код где именно искать)

Сообщение отредактировано: REC0N - 3.03.2010 19:24
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Client
сообщение 3.03.2010 19:38
Сообщение #6


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


min:=1;
for i:=2 to n do if vec[i]<vec[min] then min:=i;

В min будет нужный индекс

Сообщение отредактировано: Client - 3.03.2010 19:38
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
REC0N
сообщение 3.03.2010 19:46
Сообщение #7


Новичок
*

Группа: Пользователи
Сообщений: 19
Пол: Мужской
Реальное имя: Миша

Репутация: -  0  +


Цитата(Client @ 3.03.2010 18:38) *

min:=1;
for i:=2 to n do if vec[i]<vec[min] then min:=i;

В min будет нужный индекс

Спасибо помог smile.gif smile.gif smile.gif good.gif good.gif good.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 3.03.2010 19:54
Сообщение #8


Гость






Цитата
а на счет goto, каким образом проверить матрица квадратная
Легко:

repeat
write ('Введите количество строк в матрице:');
readln (m);
write ('Введите количество столбцов в матрице:');
readln (n);
if m<>n then writeln('Матрица должна быть квадратная! ! !');
until m = n;
GoTo выбросилось.
 К началу страницы 
+ Ответить 
REC0N
сообщение 3.03.2010 20:06
Сообщение #9


Новичок
*

Группа: Пользователи
Сообщений: 19
Пол: Мужской
Реальное имя: Миша

Репутация: -  0  +


Цитата(volvo @ 3.03.2010 18:54) *

Легко:

repeat
write ('Введите количество строк в матрице:');
readln (m);
write ('Введите количество столбцов в матрице:');
readln (n);
if m<>n then writeln('Матрица должна быть квадратная! ! !');
until m = n;
GoTo выбросилось.

Спасибо good.gif good.gif good.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
REC0N
сообщение 3.03.2010 22:45
Сообщение #10


Новичок
*

Группа: Пользователи
Сообщений: 19
Пол: Мужской
Реальное имя: Миша

Репутация: -  0  +


Можете объяснить почему ми начинаем цикл с i:=2?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Client
сообщение 3.03.2010 23:10
Сообщение #11


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


экономим 1 итерацию - зачем сравнивать первый элемент с самим собой smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
REC0N
сообщение 4.03.2010 11:49
Сообщение #12


Новичок
*

Группа: Пользователи
Сообщений: 19
Пол: Мужской
Реальное имя: Миша

Репутация: -  0  +


Цитата(Client @ 3.03.2010 22:10) *

экономим 1 итерацию - зачем сравнивать первый элемент с самим собой smile.gif

СПС good.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 29.04.2024 15:28
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"