Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > C/C++ > C/C++
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 11.07.2013, 19:02
MahovIV MahovIV вне форума
Новичок
 
Регистрация: 30.12.2012
Сообщения: 77
Репутация: 10
По умолчанию Замена максимальных элементов массива минимальными и минимальных максимальными

Мне нужно написать программу, в которой нужно заменить максимальные элементы массива заменить минимальными, а минимальные элементы массива заменить максимальными. Программа выглядит так.
Код:
#include <stdio.h>
#include <conio.h>

int main() {

	int T, a[99], i, f[99], N, w, min = 0, max = 0, kl = 0;
	scanf("%d", &T);
	while(T > 0) {
		scanf("%d", &N);
		for(i = 0; i < N; i++) {
			scanf("%d", &a[i]);
		}
			max = a[0];
			for(i = 0; i < N; i++) {
				if(max < a[i]) {
					max = a[i];
				}
			}
			min = a[0];
			for(i = 0; i < N; i++) {
				if(min > a[i]) {
					min = a[i];
				}
			}
			w = -1;
			for(i = 0; i < N; i++) {
				if(a[i] == min) {
					w++;
					f[w] = i;
					a[i] = max;
					kl++;
				}
			}
			for(i = 0; i < N; i++) {
				for(w = 0; w < kl; w++) {
				if(a[i] == max && i!=f[w]) {
					a[i] = min;
                                             }
                                             }
                                  }
			for(i = 0; i < N - 1; i++) {
				printf("%d ", a[i]);
			}
			printf("%d\n", a[N - 1]);
			w = 0;
			T--;
	}
	getch();
		return 0;
	}
Массив f[w] предназначен для сохранения индексов минимальных элементов массива. Как сделать так, чтобы изначально минимальные элементы массива заменялись максимальными и чтобы после этого снов не становились минимальными?
Ответить с цитированием
  #2  
Старый 11.07.2013, 19:32
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

А вы сделайте логический массив той-же размерности и при обмене элементов в основном массиве меняйте значение на Истина в логическом массиве.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #3  
Старый 12.07.2013, 07:12
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,055
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Цитата:
Сообщение от Страдалецъ
А вы сделайте логический массив той-же размерности и при обмене элементов в основном массиве меняйте значение на Истина в логическом массиве.

Зачем? Просто все делается в 2 прохода.
На первом ты просто находишь мин и макс элементы (можно просто значения сохранить). На втором проходе меняешь через if then else if then.
Ответить с цитированием
  #4  
Старый 12.07.2013, 12:50
MahovIV MahovIV вне форума
Новичок
 
Регистрация: 30.12.2012
Сообщения: 77
Репутация: 10
По умолчанию

Объясните поподробнее.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 06:22.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter