Помощь - Поиск - Пользователи - Календарь
Полная версия: Задача с одномерным массивом
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
-Ник-
!help.gif Переставить минимальный элемент и элемент, равный числу, введенному с клавиатуры. Вывести на экран минимальный элемент и массив до и после изменений. Часные случаи: если несколько минимальных элементов или несколько элементов, равных введенному числу с клавиатуры.
-Ник-:!help:
!help.gif shok.gif ПОМОГИТЕ ПОЖАЛУЙСТА РЕШИТЬ! mega_chok.gif !help.gif
-Ник-
Вот полный текст задания:
Организовать ручное заполнение целочисленного одномерного массива В. Переставить минимальный элемент массива (предполагая, что такой элемент единственный) и элемент, равный числу, введённому с клавиатуры (предполагая, что такой элемент единственный). Вывести на экран минимальный элемент массива, а также сам массив В до и после изменения.
Предусмотреть исключительные ситуации, а именно: если исходный массив будет содержать несколько минимальных элементов или несколько элементов, равных числу, введённому с клавиатуры, то соответствующее сообщение должно быть выведено на экран и перестановка элементов при этом осуществляться не должна.
мисс_граффити
Показывай, что пробовал делать.
alter
Можно как файл с расширением .pas?

Добавлено через 14 мин.
Ну как? Получается?
alter
HELP ME, PLEASE!!!
Client
не знаешь как найти минимальный элемент? или не можешь понять в чем проблема в твоем коде?
alter
Цитата(Client @ 15.11.2007 21:03) *

не знаешь как найти минимальный элемент? или не можешь понять в чем проблема в твоем коде?

Минимальный знаю как найти.не могу понять в чем проблема в коде и сделать часные случаи.((((
Client
Код
uses crt;
var
   a:array[1..50] of integer;
   n,i,k,c,kk,mk:integer;
begin
     clrscr;
     c:=0;
     kk:=0;
     mk:=1;
     writeln(' Vvedite n ');
     read(n);
     writeln(' Vvedite ',n,'- elementov: ');
     for i:= 1 to n do
         read(a[i]);
     writeln(' ishodniy massiv: ');
     for i:=1 to n do
         write('  ',a[i]);
     writeln(' vvedite K ');
     read(k);
     c:=a[1];
     for i:=1 to n do
         begin
              if a[i]<c then
                 begin
                      c:=a[i];
                      mk:=1;
                 end;
              if a[i]=c then
                 inc(mk);
              if a[i]=k then
                 inc(kk)
         end;
     if (mk>2) or (kk>1) then
        begin
             writeln(' neskolko chisel');
             readkey;
             halt
        end;
     for i:= 1 to n  do
         begin
              if a[i]=k then
                 a[i]:=c
              else
              if a[i]=c then
                 a[i]:=k;
         end;
     for i:=1 to n do
         write('  ',a[i]);
     writeln(' min= ',c);
     readkey
end.

Вот, будут вопросы - отвечу
alter
Цитата(Client @ 15.11.2007 21:54) *

Код
uses crt;
var
   a:array[1..50] of integer;
   n,i,k,c,kk,mk:integer;
begin
     clrscr;
     c:=0;
     kk:=0;
     mk:=1;
     writeln(' Vvedite n ');
     read(n);
     writeln(' Vvedite ',n,'- elementov: ');
     for i:= 1 to n do
         read(a[i]);
     writeln(' ishodniy massiv: ');
     for i:=1 to n do
         write('  ',a[i]);
     writeln(' vvedite K ');
     read(k);
     c:=a[1];
     for i:=1 to n do
         begin
              if a[i]<c then
                 begin
                      c:=a[i];
                      mk:=1;
                 end;
              if a[i]=c then
                 inc(mk);
              if a[i]=k then
                 inc(kk)
         end;
     if (mk>2) or (kk>1) then
        begin
             writeln(' neskolko chisel');
             readkey;
             halt
        end;
     for i:= 1 to n  do
         begin
              if a[i]=k then
                 a[i]:=c
              else
              if a[i]=c then
                 a[i]:=k;
         end;
     for i:=1 to n do
         write('  ',a[i]);
     writeln(' min= ',c);
     readkey
end.

Вот, будут вопросы - отвечу

СПС, но если чесно программа не работает вообще. Она не меняет никакие элементы и всегда выводит сообщение neskolko chisel'. Если можеш, то отладь её.
Boss
Зачем???
Цитата
сообщение должно быть выведено на экран и перестановка элементов при этом осуществляться не должна.

А если хочешь изменить, то просто убери halt после writeln(' neskolko chisel');
Client
Надо же, а у меня все работает. Хотелось бы узнать почему?
alter
Нажмите для просмотра прикрепленного файла
Цитата(Client @ 16.11.2007 6:35) *

Надо же, а у меня все работает. Хотелось бы узнать почему?

Чо за переменная KK,KM,C?
volvo
alter, Ты программу МЕНЯЛ? (я вижу, что менял, она у тебя русифицированная, а исходная - на транслите). Какие теперь претензии? Значит, что-то не так "изменил". Либо пользуйся той программой, что тебе дали, либо выкладывай свой "шедевр"...
Client
KK это количество встречающихся К
MK количество встречающихся минимальных элементов
C минимальный элемент
Еще вопросы?
Странно ты ее изменил blink.gif
хотя бы где она выводит "введите элемент массива" n раз
зачем?
alter
Скоро выложу мой почти доделанный шедевр

Добавлено через 3 мин.
Цитата(volvo @ 16.11.2007 10:20) *

alter, Ты программу МЕНЯЛ? (я вижу, что менял, она у тебя русифицированная, а исходная - на транслите). Какие теперь претензии? Значит, что-то не так "изменил". Либо пользуйся той программой, что тебе дали, либо выкладывай свой "шедевр"...


йа только сообщения поменял...
alter
Это то, что йа сделал. Помогите с частными случаями только плз!
volvo
Чтобы опять получилось так, как с моей программой? Ты благополучно ее проигнорировал, и опять просишь решить то же самое?
alter
Цитата(volvo @ 18.11.2007 12:42) *

Чтобы опять получилось так, как с моей программой? Ты благополучно ее проигнорировал, и опять просишь решить то же самое?

Йа ее не игнорировал. Она просто написана более сложно чем эта. Вот я уже сам справился!
alter
Вот моя прога!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.