Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 4.88
вика1304
2 / 2 / 0
Регистрация: 18.03.2009
Сообщений: 36
#1

Максимальный элемент массива - C++

02.06.2009, 22:03. Просмотров 1035. Ответов 16
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
#include <conio.h>
main()
{
  int n,i;
  int a[100];
  printf("\n Vvedite kolichestvo elementov v massive \n");
  scanf("%d",&n);
  printf("Vedite %d  elementov massiva \n",n);
  for(i=1;i<=n;i++)
  scanf("%d  ",&a[i]);
  int max=a[1];
  for(i=2;i<=n;i++)
  if (a[i]>max) max=a[i];
  printf("%d ",max);
  getch();
}
не могу понять ошибку
1
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.06.2009, 22:03
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Максимальный элемент массива (C++):

Все отрицательные элементы заданного массива L (11) разделить на максимальный элемент этого массива. Вывести максимальный элемент, начальный и преобра - C++
Помогите составить программу на С++

найти максимальный элемент массива x(15) . переставить местами этот максимальный элемент с индексом 4 - C++
поможете с курсовым ?

Определить, что больше: максимальный элемент массива А[10] или минимальный элемент массива В[7] - C++
Определить, что больше: максимальный элемент массива А или минимальный элемент массива В. Поставить максимальный элемент из них на место...

Определить максимальный по модулю элемент элемент массива и позицию в которой он расположен - C++
Помогите пожалуйста решить задачку по с++; Задан одномерный массив В , состоящий из n вещественных элементов. Определить максимальный...

Найти максимальный элемент массива и вывести последний четный элемент - C++
Короче нужно чтобы програма нашла максимальный елемент масива и выводила на екран последное четное число масива #include&lt;iostream&gt; ...

Поменять местами минимальный элемент с первым элементом массива, а максимальный элемент с последним - C++
Здравствуйте. Помогите пожалуйста написать программу: для поиска минимального и максимального элементов массива из 15 действительных чисел....

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Sekt
156 / 155 / 10
Регистрация: 29.04.2009
Сообщений: 637
02.06.2009, 22:37 #2
Значение max
Надо инициализировать нулем.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int n,i;
int a[100];
int max;
max=0;
printf("\n Vvedite kolichestvo elementov v massive \n");
scanf("%d",&n);
printf("Vedite %d elementov massiva \n",n);
for(i=1;i<=n;i++)
scanf("%d ",&a[i]);
for(i=2;i<=n;i++)
if (max<a[i]) 
max=a[i];
printf("%d ",max);
getch();
0
Delphin_KKC
UNIX-way
710 / 495 / 17
Регистрация: 15.01.2009
Сообщений: 1,721
02.06.2009, 22:42 #3
Sekt, а если массив из отрицательных элементов? Инициализировать надо значением первого элемента массива.
Ошибка в другом. Индексация массивов в Си идёт с нуля. Т.е. массив a[100] содержит элементы с номерами от 0 до 99.
Переделанный код не привожу, так как считаю что девушка достаточно умна чтоб догадаться где и что надо изменить.
0
Melodie
3070 / 309 / 5
Регистрация: 02.06.2009
Сообщений: 3,297
02.06.2009, 23:07 #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
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <stdio.h>
#include <conio.h>
 
int main()
{
    int n,i;
    
    int temp;
    int a[]={0};
    printf("\n Vvedite kolichestvo elementov v massive \n");
    scanf("%d",&n);
 
 
    printf("Vedite %d elementov massiva :\n", n);
       
    for(i=0;i<n;++i)
    {
        scanf("%d ",&a[i]);
    }
    
 
    for(i=0;i<n;++i)
    {
        if (a[i]<a[i+1])
        {
            temp=a[i];
            a[i]=a[i+1];
            a[i+1]=temp;
        }
        
    }
    printf("The highest num is %d ",a[0]);
    getch();
 
    return 0;
}
0
Delphin_KKC
UNIX-way
710 / 495 / 17
Регистрация: 15.01.2009
Сообщений: 1,721
02.06.2009, 23:11 #5
И какой в этом смыл? У неё код правильный и проще, только адресацию массива она с единицы начала, а не с ноля.
0
insolent
826 / 347 / 15
Регистрация: 30.01.2009
Сообщений: 1,204
02.06.2009, 23:18 #6
А не легче через STL:
C++
1
2
3
4
5
6
7
#include <algorithm>
...
int *a;
a = new int[n];
...
max = *max_element(a,a+n);
...
0
Melodie
3070 / 309 / 5
Регистрация: 02.06.2009
Сообщений: 3,297
02.06.2009, 23:29 #7
Мне всё таки кажется что кое что нужно исправить

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
#include <stdio.h>
#include <conio.h>
 
int main()
{
    int n,i;
    int max;
    int a[]={0};                  //так как она спрашивает кол!во елементов в массиве
    printf("\n Vvedite kolichestvo elementov v massive \n");
    scanf("%d",&n);
 
 
    printf("Vedite %d elementov massiva :\n", n);
       
    for(i=0;i<n;++i)
    {
        scanf("%d ",&a[i]);
    }
    
    max=a[0];                             // assign a[0] to veriable max    
 
 
             for(i=0; i<n; ++i)
    {
        if(a[i]>max)
            max=a[i];   
    }
 
    printf("The highest num is %d ", max);
    getch();
 
    return 0;
}
0
Delphin_KKC
UNIX-way
710 / 495 / 17
Регистрация: 15.01.2009
Сообщений: 1,721
03.06.2009, 00:12 #8
Я имел в виду что код по своей мысли правильный. Но, конечно, его надо исправить. Её оишбку я указал.
0
Melodie
3070 / 309 / 5
Регистрация: 02.06.2009
Сообщений: 3,297
03.06.2009, 00:28 #9
ошивка не только в том что ты указал, я не вижу смысла в этом
C++
1
2
3
4
5
6
7
int max;
max=0;                   //  зачем это нужно, в этом случае 1 елемент а[0] никогда 
                                  не будет сравниваться со ...........
 
for(i=2;i<=n;i++)       
if (max<a[i]) 
max=a[i];
Нужно не initialize max=0; , правильнее будет assign value of a[0] to max, и потом начинать сравнение сo второго елемента в аррэе то есть с a[1]
C++
1
2
3
4
5
6
7
int max;
 
max=a[0];
 
for(i=1; i<n; ++i)               
if (max<a[i]) 
max=a[i];

Или я не права?


И ещё вместо int a[100] будет лучше int a[]={0};
0
Gravity
562 / 556 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
03.06.2009, 00:52 #10
Цитата Сообщение от nynicue Посмотреть сообщение
И ещё вместо int a[100] будет лучше int a[]={0};
Вот это вряд ли. Ты тем самым выделяешь массив на 1 элемент, и если вводиться в него будет больше 1го элемента, то прога может обратиться к неизвестно чьей памяти и с радостью вылететь.
0
insolent
826 / 347 / 15
Регистрация: 30.01.2009
Сообщений: 1,204
03.06.2009, 00:52 #11
повторюсь:
Цитата Сообщение от insolent Посмотреть сообщение
А не легче через STL:
C++
1
2
3
4
5
6
7
#include <algorithm>
...
int *a;
a = new int[n];
...
max = *max_element(a,a+n);
...
Уже все сделано за нас
0
Melodie
3070 / 309 / 5
Регистрация: 02.06.2009
Сообщений: 3,297
03.06.2009, 01:06 #12
может быть я не права, но это означает что в начале все n's елементы ( [] оставляем пустым так как мы ещё не знаем кол!во п елементов) будут иметь value of '0', пока она не положет другое value используя

for(i=0;i<n;++i)
{
scanf("%d ",&a[i]);
}


>Ты тем самым выделяешь массив на 1 элемент, и если вводиться в него будет больше 1го элемента, то прога может обратиться к неизвестно чьей памяти и с радостью вылететь>

Нет ты не прав, это будет давать возможность ввести любое кол во елементов
0
FunDuck
688 / 379 / 4
Регистрация: 22.01.2009
Сообщений: 1,135
03.06.2009, 01:12 #13
Нет... размер задается сразу... т.е. например у массива int arr[] = {1,2,3,4,5} размерность 5 будет...
0
Gravity
562 / 556 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
03.06.2009, 01:18 #14
Цитата Сообщение от nynicue Посмотреть сообщение
может быть я не права, но это означает что в начале все n's елементы ( [] оставляем пустым так как мы ещё не знаем кол!во п елементов) будут иметь value of '0'
Не правы. Читайте внимательно про инициализацию массивов http://masterpc.alfaspace.net/books/...ramming/4/#p49

Добавлено через 2 минуты 23 секунды
Цитата Сообщение от nynicue Посмотреть сообщение
Нет ты не прав, это будет давать возможность ввести любое кол во елементов
Я уже говорил, запись будет происходить пока не нарвешься на кем-то занятую память.
0
Melodie
3070 / 309 / 5
Регистрация: 02.06.2009
Сообщений: 3,297
03.06.2009, 01:23 #15
прошу прощения, была не права
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.06.2009, 01:23
Привет! Вот еще темы с ответами:

Определить максимальный элемент массива и элемент, являющийся максимальным без учёта этого элемента - C++
Дан массив из n элементов, необходимо определить максимальный элемент массива и элемент, являющийся максимальным без учёта этого элемента.

Заменить максимальный элемент массива средним арифметическим положительных элементов массива - C++
Помогите решить задачу,голова уже совсем не варит. Заменить максимальный элемент массива средним арифметическим положительных элементов...

Найти максимальный элемент массива и сумму элементов массива по условию - C++
Доброе утро!...Уже и не знаю в чём дело....Вот тебе и заочное отделение:) Написать программу, работающую с одномерным вещественным...

Сразу три 1.анализ функции, 2.замена элементов массива, 3.максимальный элемент массива - C++
1. Протабулировать заданную функцию y = f(x) на промежутке с постоянным шагом h. интервал =; шаг h=0.1; система уравнений (х-1)^4 и...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
03.06.2009, 01:23
Ответ Создать тему
Опции темы

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