Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.01.2012, 22:52   #1
Leshii
Форумчанин
 
Регистрация: 26.07.2011
Сообщений: 376
По умолчанию Занулить максимальные элементы в массиве.

Доброго времени суток, прошу помочь или же просто подкинуть совет\идею)
У меня получилось обнулить, но только 1 максимальное число. Ну и собственно вопрос, как обнулить остальные ? Кинул весь код программы, но прошу весь не смотреть не в том суть, сразу выделил тот момент где думаю возможно чего-то не хватает или же я что-то по логике упустил.


Код:
{-R}
Uses crt;
Type
  MyType= Word;
  tr = file of word;
Type
  MyArray=Array[1..1] of MyType;
  MyArrayPtr=^MyArray;
var
   DynamicArray: MyArrayPtr;
   i, k, Count, Size, B, max, buffer: word;
   t: tr;
   name: string;


begin
clrscr;
 write('Vvedite nazvanie: ');
 readln(name);
 assign(t, name);
 rewrite(t);
 write('Vvedite 4islo elementov massiva ');
 ReadLn(Count);
 randomize;
  for i:=1 to Count do begin
      B:=random(10);
      write(t, b);
  end;
close(t);
reset(t);
while not eof(t) do begin

   read(t, b);
   write(b:2,' ');

end;

close(t);

reset(t);
writeln;
writeln('Zapoln9em massiv');
Size:=Count*SizeOf(MyType);
GetMem(DynamicArray,Size);
for i:=1 to Count do DynamicArray^[I]:=I;

for i:=1 to Count do begin
    read(t, DynamicArray^[i]);
    write('Mas[',i,']:=',DynamicArray^[I]:2,' ');
end;
writeln;
max:=1;k:=0;
for i:=1 to Count do
 if DynamicArray^[max]<=DynamicArray^[i]  then begin
    max:=i;
    write(' ',DynamicArray^[max]);
 end;
 writeln;
for i:=1 to Count do
    DynamicArray^[max]:=0;
for i:=1 to count do
    write(' ',DynamicArray^[i]);
readln;
end.
Люблю на ты.Я человек простой
Leshii вне форума Ответить с цитированием
Старый 24.01.2012, 22:57   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
for i:=1 to Count do DynamicArray^[I]:=I;
Щоза??? Зачем???
Код:
max:=0;
for i:=1 to Count do begin
    read(t, DynamicArray^[i]);
    if DynamicArray^[i]>max then max:=DynamicArray^[i];
    write('Mas[',i,']:=',DynamicArray^[I]:2,' ');
end;
writeln;

for i:=1 to Count do begin
    if DynamicArray^[i]=max then    DynamicArray^[max]:=0;
    write(' ',DynamicArray^[i]);
end;
readln;
end.
Пойдет?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.01.2012, 23:03   #3
Leshii
Форумчанин
 
Регистрация: 26.07.2011
Сообщений: 376
По умолчанию

Поедет =) Но по факту, тоже что и было до того =)
Вы на эти причуды не обращайте внимания... я давно это писал.
Люблю на ты.Я человек простой
Leshii вне форума Ответить с цитированием
Старый 24.01.2012, 23:14   #4
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

хммм! интересно!
Цитата:
Код:
max:=0; //Рискованно, а если массив из отрицательных чисел?
for i:=1 to Count do begin
    read(t, DynamicArray^[i]);
    if DynamicArray^[i]>max then max:=DynamicArray^[i]; // Сохранили значение в мах. Ок Всё верно
    write('Mas[',i,']:=',DynamicArray^[I]:2,' ');
end;
writeln;
Дальше
Цитата:
Код:
for i:=1 to Count do begin
    if DynamicArray^[i]=max then    DynamicArray^[max]:=0; // Это вот с какого мах стал индексом?
    write(' ',DynamicArray^[i]);
end;
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303

Последний раз редактировалось Hacker19_90; 24.01.2012 в 23:28.
Hacker19_90 вне форума Ответить с цитированием
Старый 24.01.2012, 23:30   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
max:=0; //Рисковано а если массив из отрицательных чисел?
Чего???
Цитата:
Type
MyType= Word;
tr = file of word;
Type
MyArray=Array[1..1] of MyType;
Каких еще отрицательных?
Цитата:
Это вот с какого мах стал индексом?
Согласен, очепятка. там i нужно.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.01.2012, 23:34   #6
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

Цитата:
Каких еще отрицательных?
уппс пардон! Word то я и не пропалил!
Цитата:
очепятка
Прикольно звучит +1
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 24.01.2012, 23:49   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Word то я и не пропалил!
Ну дык мы в расчете
Ничья получилась
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дан одномерный массив. Переместить максимальные элементы в конец, сдвинув остальные элементы влево Alexbmgn Помощь студентам 2 18.12.2011 17:17
в массиве все максимальные элементы заменить первым элементом, а все минимальные элементы заменить последним элементом Валерия2701 Паскаль, Turbo Pascal, PascalABC.NET 1 12.10.2011 15:49
на побочной диагонали должны стоять максимальные элементы всех строк SkyL1ne Помощь студентам 1 28.09.2010 22:01
Максимальные элементы двумерного массива Jasper92 Общие вопросы C/C++ 0 17.12.2009 15:23
Дана матрица А(6,5). Составить массив, содержащий максимальные элементы каждого столбца. caen21rus Общие вопросы C/C++ 6 27.05.2009 17:06