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

Delphi Sources



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

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

Мне нужно написать программу, в которой нужно заменить максимальные элементы массива заменить минимальными, а минимальные элементы массива заменить максимальными. Программа выглядит так.
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#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,087
Версия 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, время: 11:37.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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