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

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

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

> Строка с минимальным числом элементов
сообщение
Сообщение #1


Новичок
*

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

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


Всем привет! У меня небольшая проблема с задачаю.Помогите пожалуйста.
Условие!
Данная матрица NxN.
Нужно вывести номер строки с минимальным число элементов что равны заданному (заданое число вводит пользователь).
Итак, программа работает, только есть одно "но", если пользователь вводит матрицу в которой все строки одинаковые (Пример: Матрица 3х3!Во всех строках присутствует число,например "1") и пользователь вводит число "1" то минимальным будет только первая строка, и программа ее выведет на экран.
Как сделать так чтобы выводило порядковые номера всех трех строк (поскольку они же равние).
Вот сама программа:

program matryca;
uses crt;
const nmax = 100;

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

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


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

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, '-ю строку');
write (vec [i]);
writeln;
end;

min: = 1;
for i: = 2 to n do begin

if vec [i] <vec [min] then min: = i;

end;

write ( 'Строка с минимальным значением:');
writeln (min);

end.

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 7)
сообщение
Сообщение #2


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(REC0N @ 8.03.2010 22:26) *
Как сделать так чтобы выводило порядковые номера всех трех строк (поскольку они же равние).

Предпоследнюю строку (writeln (min);) замени на следующее:
for i:=1 to n do if vec[i]=vec[min] then WriteLn(i);


Пожалуйста, используй правильные тэги (см. п.2 правил вверху страницы), а также:
форматируй
свои программы
нормально
очень трудно
же
читать
твой
код
!


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

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

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


Цитата(Lapp @ 9.03.2010 1:42) *

Предпоследнюю строку (writeln (min);) замени на следующее:
for i:=1 to n do if vec[i]=vec[min] then WriteLn(i);


Пожалуйста, используй правильные тэги (см. п.2 правил вверху страницы), а также:
форматируй
свои программы
нормально
очень трудно
же
читать
твой
код
!


Чем тебе не нравитса мой код.Вроде все норм. сделал,по правилам??

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


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(REC0N @ 10.03.2010 0:13) *
Чем тебе не нравитса мой код.Вроде все норм. сделал,по правилам??
А чего так эмоционально?
Лучше бы спасибо за ответ сказал..

Нет, у тебя не по правилам. Правила такие:
- после begin и т.п. сдвигать вправо;
- end и т.п. сдвигать влево.
И еще несколько правил небольших.
У тебя сдвиг пляшет, как молодой жеребец на выпасе )).

А если ты про тэги - так это я тебе исправил.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

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

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


Цитата(Lapp @ 10.03.2010 7:10) *

Лучше бы спасибо за ответ сказал..

Спасибо
P.S:Нормальние у меня сдвиги


 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Упорство - хорошо, упрямство - плохо. Когда утверждаешь что-то:
Цитата(REC0N @ 10.03.2010 17:13) *
P.S:Нормальние у меня сдвиги
- будь добр, приводи аргументы. Я тебе не поленился сказать, что я имею в виду, а у тебя с аргументами проблема, раз повторяешь как попугай, что у тебя все нормально? Я что тебе что - учитель, чтобы придираться? мне плевать с высокой колокольни, на все твои закидоны. Хотел помочь - но нет смысла помогать тому, кто того не хочет.

Вот твоя прога, правильно отформатированная (tab=4):
program matryca;
uses
crt;
const
nmax = 100;

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

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

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

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, '-ю строку');
write (vec [i]);
writeln;
end;

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

write ( 'Строка с минимальным значением:');
writeln (min);
end.

Постарайся разобратся с принципами на этом примере. А то, если делать, как у тебя было - для красоты и проформы -, то с прогой большей, чем на пару экранов, ты замучишься. Хотя, не исключен вариант, что у тебя в программной среде все выглядит иначе, а тут твои табы поехали. Тогда один взгляд на твой первый пост (если ты не удосужился посмотреть) должен тебе прояснить, о чем я говорю.

Ты, кстати, в чем пишешь? Если TP/BP - то странные у тебя комментарии (впрочем, они в любом случае странные). И убери галку с опции "use Tab characters" - она тебя подведет еще не раз. А уж про твои ": =" с пробелом внутри я вообще молчу - неясно, как на вообще компилилась..

И оставь свой норов перед входом на форум. Маме с папой будешь говорить "у меня все хорошо,"- и губы надувать . Все, что говоришь - подтверждай..


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Новичок
*

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

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


Цитата(Lapp @ 11.03.2010 5:06) *

Упорство - хорошо, упрямство - плохо. Когда утверждаешь что-то:
Ты, кстати, в чем пишешь? Если TP/BP - то странные у тебя комментарии (впрочем, они в любом случае странные). И убери галку с опции "use Tab characters" - она тебя подведет еще не раз. А уж про твои ": =" с пробелом внутри я вообще молчу - неясно, как на вообще компилилась..

На PascalABC...А ПРОГУ кинул в переводчик чтоб коменти перевести, бо сам в руском неочень(с Украини) вот оно и ": = " разделило как попало sad.gif
P.S: Каждий коментарий по отдельности как то неохота било кидадь :P
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(REC0N @ 11.03.2010 18:41) *
На PascalABC...А ПРОГУ кинул в переводчик чтоб коменти перевести, бо сам в руском неочень(с Украини) вот оно и ": = " разделило как попало sad.gif
P.S: Каждий коментарий по отдельности как то неохота било кидадь :P
И это из-за этого переводчика весь этот сыр-бор?? lol.gif Лучше уж не переводи совсем... smile.gif

ABC - не лучший вариант. Ты с ним намучишься. Скачай FPC ( http://freepascal.org/ ).
Успехов!


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





- Текстовая версия 18.05.2024 5:41
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name