Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
Tkas
1 / 1 / 1
Регистрация: 26.02.2012
Сообщений: 42
1

Получить массив, содержащий все номера максимальных чисел исходного массива

26.02.2012, 12:13. Просмотров 589. Ответов 4
Метки нет (Все метки)

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
/*Дан одномерный массив.
 Получить другой массив содержащий все номера максимальных чисел первого массива*/
int main()
{
    int a[4];
    int b[4];
    int i, max;
    printf("Vvedite elementi massiva\n");
    for (i=0; i<4; i++)
        scanf("%d", &a[i]);
    max = a[0];
    for (i=0; i<4; i++)
    {
        if (a[i]>max)
            max = a[i]; //определили максимальный элемент массива
        if (a[i] == max) //если значение ячейки массива равно максимальному значению массива
            b[4] = i; //то помещаем его номер в массив
    }
    printf("Maximalnyi element massiva = %d\n", max);
    printf("Nomer maximalnygo elementa massiva = %d\n", b[4]);
    return 0;
}
Как помещать в массив номера элементов? А то всегда помещается старший номер. Например: 1 100 2 100 на выходе будет 3.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.02.2012, 12:13
Ответы с готовыми решениями:

Создать файл целых чисел, содержащий номера всех локальных экстремумов исходного файла в порядке убывания.
Дан файл вещественных чисел. Создать файл целых чисел, содержащий номера всех...

Вывести массив, содержащий длины всех серий исходного массива
Дан целочисленный массив размера N. Назовем серией группу подряд идущих...

Сформировать массив, содержащий упорядоченные по возрастанию целые части элементов исходного массива
С произвольного одномерного массива действительных чисел сформировать массив,...

Массив: Cоздать массив, содержащий все значения из массива Б, которых нет в массиве А.
На основе двух массивов А и Б (Размеры вводит пользователь, значение заполняет...

Сформировать массив из целых чисел исходного массива
Задание у меня такое: Дан массив вещественных чисел Х размером М. Сформировать...

4
rangerx
1949 / 1558 / 478
Регистрация: 31.05.2009
Сообщений: 2,913
26.02.2012, 23:17 2
C
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
#include <stdio.h>
/*Дан одномерный массив.
 Получить другой массив содержащий все номера максимальных чисел первого массива*/
int main()
{
    int a[4];
    int b[4];
    int i, j, max;
 
    max = 0;
    j = 0;
 
    printf("Vvedite elementi massiva\n");    
    for (i=0; i<4; i++)
    {
        scanf("%d", &a[i]);
    if(a[i] > a[max]) 
    {     
        j = 0;
        b[j++] = i + 1;
        max = i;
        }
    else if(a[i] == a[max])
        {
        b[j++] = i + 1;   
        }   
    }
    
    printf("Maximalnyi element massiva: %d\n", a[max]);
    printf("Nomera maximalnih elementov massiva:\n");     
    for (i=0; i<j; i++)    
      printf("%d ", b[i]);            
    printf("\n");
 
    return 0;
}
1
Tkas
1 / 1 / 1
Регистрация: 26.02.2012
Сообщений: 42
27.02.2012, 00:36  [ТС] 3
Цитата Сообщение от rangerx Посмотреть сообщение
C
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
#include <stdio.h>
/*Дан одномерный массив.
 Получить другой массив содержащий все номера максимальных чисел первого массива*/
int main()
{
    int a[4];
    int b[4];
    int i, j, max;
 
    max = 0;
    j = 0;
 
    printf("Vvedite elementi massiva\n");    
    for (i=0; i<4; i++)
    {
        scanf("%d", &a[i]);
    if(a[i] > a[max]) 
    {     
        j = 0;
        b[j++] = i + 1;
        max = i;
        }
    else if(a[i] == a[max])
        {
        b[j++] = i + 1;   
        }   
    }
    
    printf("Maximalnyi element massiva: %d\n", a[max]);
    printf("Nomera maximalnih elementov massiva:\n");     
    for (i=0; i<j; i++)    
      printf("%d ", b[i]);            
    printf("\n");
 
    return 0;
}
Спасибо!

Добавлено через 1 час 1 минуту
Вот сейчас начал разбираться в коде: что происходит в цикле for (b[j++]=i, j=0...)?
0
rangerx
1949 / 1558 / 478
Регистрация: 31.05.2009
Сообщений: 2,913
27.02.2012, 01:11 4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if(a[i] > a[max]) // если найден элемент больший текущего максимума
{         
    // обнуляем счётчик количества элементов массива b
    j = 0; 
 
    // заносим в массив b позицию наибольшего из найденных на данный момент элементов
    // и увеличиваем счётчик на 1
    b[j++] = i + 1; // то же самое, что и b[j] = i + 1; j = j + 1;
    // ...
}
else if(a[i] == a[max]) // в противном случае, если найден элемент равный текущему максимуму
{
    // заносим его позицию в массив b и увеличиваем счётчик на 1
    b[j++] = i + 1;
}
1
Tkas
1 / 1 / 1
Регистрация: 26.02.2012
Сообщений: 42
27.02.2012, 11:09  [ТС] 5
Меня просто смутил момент b[j++] = i; я думал, что в массиве теперь будут не номера элементов, а их количество (так как j++) и что = i ни на что не влияет.
0
27.02.2012, 11:09
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.02.2012, 11:09

Дан массив X(25). Сформировать новый массив из чисел исходного, лежащих в интервале [-3,7]
Доброго времени суток... Написание данной программы на языке (С) вызвало у...

Массив: Сформировать и вывести массив размера N, содержащий N первых положительных нечетных чисел: 1, 3, 5
Дано целое число N ( &gt; 0). Сформировать и вывести целочисленный массив размера...

Получить все шестизначные счастливые номера
Всем еще раз привет!еще одна прога... Получить все шестизначные счастливые...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru