![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
REC0N |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 19 Пол: Мужской Реальное имя: Миша Репутация: ![]() ![]() ![]() |
Всем привет! У меня небольшая проблема с задачаю.Помогите пожалуйста.
Условие! Данная матрица 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.
|
Lapp |
![]()
Сообщение
#2
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Как сделать так чтобы выводило порядковые номера всех трех строк (поскольку они же равние). Предпоследнюю строку (writeln (min);) замени на следующее: for i:=1 to n do if vec[i]=vec[min] then WriteLn(i);
Пожалуйста, используй правильные тэги (см. п.2 правил вверху страницы), а также: форматируй
свои программы
нормально
очень трудно
же
читать
твой
код
!
-------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
REC0N |
![]()
Сообщение
#3
|
Новичок ![]() Группа: Пользователи Сообщений: 19 Пол: Мужской Реальное имя: Миша Репутация: ![]() ![]() ![]() |
Предпоследнюю строку (writeln (min);) замени на следующее: for i:=1 to n do if vec[i]=vec[min] then WriteLn(i);
Пожалуйста, используй правильные тэги (см. п.2 правил вверху страницы), а также: форматируй
свои программы
нормально
очень трудно
же
читать
твой
код
!
Чем тебе не нравитса мой код.Вроде все норм. сделал,по правилам?? Сообщение отредактировано: REC0N - 10.03.2010 0:13 |
Lapp |
![]()
Сообщение
#4
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Чем тебе не нравитса мой код.Вроде все норм. сделал,по правилам?? А чего так эмоционально?Лучше бы спасибо за ответ сказал.. Нет, у тебя не по правилам. Правила такие: - после begin и т.п. сдвигать вправо; - end и т.п. сдвигать влево. И еще несколько правил небольших. У тебя сдвиг пляшет, как молодой жеребец на выпасе )). А если ты про тэги - так это я тебе исправил. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
REC0N |
![]()
Сообщение
#5
|
Новичок ![]() Группа: Пользователи Сообщений: 19 Пол: Мужской Реальное имя: Миша Репутация: ![]() ![]() ![]() |
|
Lapp |
![]()
Сообщение
#6
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Упорство - хорошо, упрямство - плохо. Когда утверждаешь что-то:
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" - она тебя подведет еще не раз. А уж про твои ": =" с пробелом внутри я вообще молчу - неясно, как на вообще компилилась.. И оставь свой норов перед входом на форум. Маме с папой будешь говорить "у меня все хорошо,"- и губы надувать . Все, что говоришь - подтверждай.. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
REC0N |
![]()
Сообщение
#7
|
Новичок ![]() Группа: Пользователи Сообщений: 19 Пол: Мужской Реальное имя: Миша Репутация: ![]() ![]() ![]() |
Упорство - хорошо, упрямство - плохо. Когда утверждаешь что-то: Ты, кстати, в чем пишешь? Если TP/BP - то странные у тебя комментарии (впрочем, они в любом случае странные). И убери галку с опции "use Tab characters" - она тебя подведет еще не раз. А уж про твои ": =" с пробелом внутри я вообще молчу - неясно, как на вообще компилилась.. На PascalABC...А ПРОГУ кинул в переводчик чтоб коменти перевести, бо сам в руском неочень(с Украини) вот оно и ": = " разделило как попало ![]() P.S: Каждий коментарий по отдельности как то неохота било кидадь :P |
Lapp |
![]()
Сообщение
#8
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
На PascalABC...А ПРОГУ кинул в переводчик чтоб коменти перевести, бо сам в руском неочень(с Украини) вот оно и ": = " разделило как попало И это из-за этого переводчика весь этот сыр-бор?? ![]() P.S: Каждий коментарий по отдельности как то неохота било кидадь :P ![]() ![]() ABC - не лучший вариант. Ты с ним намучишься. Скачай FPC ( http://freepascal.org/ ). Успехов! -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
![]() ![]() |
![]() |
Текстовая версия | 17.07.2025 7:16 |