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

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

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

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

02.06.2009, 22:03. Просмотров 1021. Ответов 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();
}
не могу понять ошибку
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.06.2009, 22:03     максимальный элемент массива
Посмотрите здесь:

C++ Поменять местами минимальный и максимальный элемент массива V[25] и подсчитать количество парных элементов массива
Сразу три 1.анализ функции, 2.замена элементов массива, 3.максимальный элемент массива C++
C++ Определить, что больше: максимальный элемент массива А[10] или минимальный элемент массива В[7]
C++ Заменить максимальный элемент массива средним арифметическим положительных элементов массива
C++ Матрица динамическая. 1. максимальный элемент массива; 2. сумму элементов массива, расположенных до последнего положительного элемента
В одномерном массиве вычислить: максимальный элемент массива и сумму элементов массива, расположенных до последнего положительного элемента C++
C++ Заменить максимальный элемент в матрице, средним арифметическим элементов строки, в которой находится максимальный элемент
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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();
Delphin_KKC
UNIX-way
709 / 494 / 17
Регистрация: 15.01.2009
Сообщений: 1,721
02.06.2009, 22:42     максимальный элемент массива #3
Sekt, а если массив из отрицательных элементов? Инициализировать надо значением первого элемента массива.
Ошибка в другом. Индексация массивов в Си идёт с нуля. Т.е. массив a[100] содержит элементы с номерами от 0 до 99.
Переделанный код не привожу, так как считаю что девушка достаточно умна чтоб догадаться где и что надо изменить.
Melodie
3070 / 309 / 5
Регистрация: 02.06.2009
Сообщений: 3,297
02.06.2009, 23:07     максимальный элемент массива #4
Не уверена , но если ты пытаешься найти наибольшее число
то это может подойти
HTML5
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
[code]
#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;
}[/code]
Delphin_KKC
UNIX-way
709 / 494 / 17
Регистрация: 15.01.2009
Сообщений: 1,721
02.06.2009, 23:11     максимальный элемент массива #5
И какой в этом смыл? У неё код правильный и проще, только адресацию массива она с единицы начала, а не с ноля.
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);
...
Melodie
3070 / 309 / 5
Регистрация: 02.06.2009
Сообщений: 3,297
02.06.2009, 23:29     максимальный элемент массива #7
Мне всё таки кажется что кое что нужно исправить

HTML5
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;
}
Delphin_KKC
UNIX-way
709 / 494 / 17
Регистрация: 15.01.2009
Сообщений: 1,721
03.06.2009, 00:12     максимальный элемент массива #8
Я имел в виду что код по своей мысли правильный. Но, конечно, его надо исправить. Её оишбку я указал.
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};
Gravity
558 / 552 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
03.06.2009, 00:52     максимальный элемент массива #10
Цитата Сообщение от nynicue Посмотреть сообщение
И ещё вместо int a[100] будет лучше int a[]={0};
Вот это вряд ли. Ты тем самым выделяешь массив на 1 элемент, и если вводиться в него будет больше 1го элемента, то прога может обратиться к неизвестно чьей памяти и с радостью вылететь.
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);
...
Уже все сделано за нас
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го элемента, то прога может обратиться к неизвестно чьей памяти и с радостью вылететь>

Нет ты не прав, это будет давать возможность ввести любое кол во елементов
FunDuck
688 / 379 / 4
Регистрация: 22.01.2009
Сообщений: 1,135
03.06.2009, 01:12     максимальный элемент массива #13
Нет... размер задается сразу... т.е. например у массива int arr[] = {1,2,3,4,5} размерность 5 будет...
Gravity
558 / 552 / 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 Посмотреть сообщение
Нет ты не прав, это будет давать возможность ввести любое кол во елементов
Я уже говорил, запись будет происходить пока не нарвешься на кем-то занятую память.
Melodie
3070 / 309 / 5
Регистрация: 02.06.2009
Сообщений: 3,297
03.06.2009, 01:23     максимальный элемент массива #15
прошу прощения, была не права
zeubr
2 / 2 / 1
Регистрация: 17.05.2009
Сообщений: 22
04.06.2009, 10:16     максимальный элемент массива #16
Я думаю сравнение лучше проводить сразу при вводе массива:

for (i=0;i<a;i++)
{
printf("%d елемент:",i+1);
scanf("%d",&mas[i]);

if (mas[i]>max)

max=mas[i], b=i;

}

Добавлено через 15 часов 13 минут 40 секунд
И по моему наиболее корректно обозначить за максимум либо 1 элемент массива, либо минимальное число разрешонное выбранным типом данных.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.06.2009, 20:52     максимальный элемент массива
Еще ссылки по теме:

C++ Определить максимальный по модулю элемент элемент массива и позицию в которой он расположен
C++ Найти максимальный элемент массива и сумму элементов массива по условию
C++ Если максимальный элемент массива А больше минимального элемента массива В, поменять данные элементы местами
Определить максимальный элемент массива и элемент, являющийся максимальным без учёта этого элемента C++
C++ Вставить после каждого нечетного элемента массива максимальный простой элемент этого же массива

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

Или воспользуйтесь поиском по форуму:
вика1304
2 / 2 / 0
Регистрация: 18.03.2009
Сообщений: 36
05.06.2009, 20:52  [ТС]     максимальный элемент массива #17
Товарищи программисты....не забывайте, что я еще только учусь....и ошибка для начала в том, что программа запрашивает больше элементов, чем положено
Yandex
Объявления
05.06.2009, 20:52     максимальный элемент массива
Ответ Создать тему
Опции темы

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