Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 20.10.2019
Сообщений: 60
1

Вывести индексы нескольких элементов массива

04.11.2019, 20:34. Показов 2303. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В массиве найти максимальный по значению элемент, вывести его индекс, если таких элементов несколько, то вывести индексы всех элементов.

У меня есть код программы, которая выводит индекс только одного максимального элемента массива, как её дополнить, чтобы она выводила индексы двух и более максимальных элементов? Вот код программы:


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
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
 
int main() {
    setlocale(LC_ALL, "");
    size_t n;
    printf("Введите количество элементов массива: ");
    scanf_s("%d", &n);
    int* arr = (int*)malloc(sizeof(int) * n);
    size_t idxMax = 0;
    printf("Введите через пробел элементы массива: \n");
 
    for (size_t i = 0; i < n; i++) {
        scanf_s("%d", arr + i);
        
        if (arr[i] > arr[idxMax])
            idxMax = i;
    }
    printf("Максимальный элемент массива: %d\n", arr[idxMax]);
        free(arr);
    return 0;
 
 
}

Почему, если ввести 5 элементов массива, например, 15; -1; 31; 0; 1, то окно отладки сразу закрывается?
Точно так же: 3 элемента: -1; 15; 0.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.11.2019, 20:34
Ответы с готовыми решениями:

Вывести индексы совпадающих элементов массива
Суть программы такова: она должна выводить индексы совпадающих элементов. Но мой код не...

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

Вывести на экран индексы всех элементов, совпадающих с максимальным элементом массива
Всем доброе время суток! Задача: Дан целочисленный массив. Вывести на экран индексы всех...

Вывести на экран значения и адреса (индексы) наибольшего и наименьшего элементов массива
Дан массив из N вещественных чисел (1&lt;N&lt;100). Вывести на экран значения и адреса (индексы)...

3
Модератор
2639 / 1751 / 920
Регистрация: 16.10.2013
Сообщений: 5,068
Записей в блоге: 14
05.11.2019, 05:39 2
Лучший ответ Сообщение было отмечено K1234567 как решение

Решение

Цитата Сообщение от K1234567 Посмотреть сообщение
scanf_s("%d", arr + i);
уже не первый раз натыкаюсь на эту ошибку. Хоть в отдельную тему ее выноси. Функция scanf_s() принимает на вход 3 аргумента, а вы передаете ей 2. Тогда уж используйте обычную функцию scanf()

Я бы лучше сначала нашел само значение максимального элемента массива, и после этого еще раз прошелся циклом по массиву и вывел все значения равные максимальному. Это решение в лоб, оно самое простое :

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
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
 
int main() {
    setlocale(LC_ALL, "");
    size_t n;
    printf("Введите количество элементов массива: ");
    scanf("%d", &n);
    int* arr = (int*)malloc(sizeof(int) * n);
    int maxValue = 0;
    printf("Введите через пробел элементы массива: \n");
    maxValue = arr[0];
    for (size_t i = 1; i < n; i++) {
        scanf("%d", arr + i);
        
        if (arr[i] > maxValue)
            maxValue = arr[i];
    }
    printf("Максимальны(й/е) элемент(ы) массива: ");
    for(size_t i = 0; i < n; i++){
        if(arr[i] == maxValue)
            printf("arr[%d] = %d ", i, arr[i]);
    }
    free(arr);
    return 0;
}
1
0 / 0 / 0
Регистрация: 20.10.2019
Сообщений: 60
05.11.2019, 17:19  [ТС] 3
Программа работает только при нажатии Ctrl+F5. Если нажать F5, то после ввода данных окно отладки сразу закрывается и ничего не происходит. Такое было с некоторыми другими программами. Что делать в таком случае?
0
Модератор
2639 / 1751 / 920
Регистрация: 16.10.2013
Сообщений: 5,068
Записей в блоге: 14
06.11.2019, 05:29 4
Цитата Сообщение от K1234567 Посмотреть сообщение
Что делать в таком случае?
C
1
2
3
free(arr);
system("pause");
return 0;
0
06.11.2019, 05:29
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.11.2019, 05:29
Помогаю со студенческими работами здесь

Определить, есть ли среди элементов массива простые числа, и вывести их индексы
Задан целочисленный массив размерностью N. Есть ли среди элементов массива простые числа? Если да,...

Вывести индексы ненулевых элементов матрицы
В данной действительной квадратной матрице порядка N*N. Найти: вывести индексы ненулевых элементов.

Вывести индексы всех ненулевых элементов матрицы
Ребята помогите, задание есть двумерный масив нужно вывести адреса всех нераных нулю элементов,...

Вывести индексы всех ненулевых элементов матрицы 15x15
Здравствуйте,в программе не работает вывод,то есть выводит какие попало значения.Помогите...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru