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

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

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

 
 Ответить  Открыть новую тему 
> Строка с минимальным числом элементов
REC0N
сообщение 8.03.2010 22:26
Сообщение #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 
 К началу страницы 
+ Ответить 
Lapp
сообщение 9.03.2010 2:42
Сообщение #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 
 К началу страницы 
+ Ответить 
REC0N
сообщение 10.03.2010 0:13
Сообщение #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 - 10.03.2010 0:13
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 10.03.2010 8:10
Сообщение #4


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

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

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


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

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

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


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


Новичок
*

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

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


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

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

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


 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 11.03.2010 6:06
Сообщение #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 
 К началу страницы 
+ Ответить 
REC0N
сообщение 11.03.2010 18:41
Сообщение #7


Новичок
*

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

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


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

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

На PascalABC...А ПРОГУ кинул в переводчик чтоб коменти перевести, бо сам в руском неочень(с Украини) вот оно и ": = " разделило как попало sad.gif
P.S: Каждий коментарий по отдельности как то неохота било кидадь :P
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 12.03.2010 1:08
Сообщение #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

 

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