Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
2 / 2 / 0
Регистрация: 18.03.2009
Сообщений: 36
1

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

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

Author24 — интернет-сервис помощи студентам
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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.06.2009, 22:03
Ответы с готовыми решениями:

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

Найти максимальный элемент в каждой строке массива и номер столбца, в котором этот максимальный элемент находится
Найти максимальный элемент в каждой строке массива и номер столбца, в котором этот максимальный...

Найти максимальный элемент массива x(15), поменять местами этот максимальный элемент с индексом 4
поможете с курсовым ?

Поменять местами строку, содержащую максимальный элемент массива, со строкой, содержащей минимальный элемент массива
сложно дались массивы, помогите написать код. Дан вещественный массив А. Поменять местами строку,...

16
159 / 156 / 47
Регистрация: 29.04.2009
Сообщений: 636
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
UNIX-way
712 / 495 / 49
Регистрация: 15.01.2009
Сообщений: 1,720
02.06.2009, 22:42 3
Sekt, а если массив из отрицательных элементов? Инициализировать надо значением первого элемента массива.
Ошибка в другом. Индексация массивов в Си идёт с нуля. Т.е. массив a[100] содержит элементы с номерами от 0 до 99.
Переделанный код не привожу, так как считаю что девушка достаточно умна чтоб догадаться где и что надо изменить.
0
3071 / 313 / 5
Регистрация: 02.06.2009
Сообщений: 3,293
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
UNIX-way
712 / 495 / 49
Регистрация: 15.01.2009
Сообщений: 1,720
02.06.2009, 23:11 5
И какой в этом смыл? У неё код правильный и проще, только адресацию массива она с единицы начала, а не с ноля.
0
829 / 352 / 64
Регистрация: 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
3071 / 313 / 5
Регистрация: 02.06.2009
Сообщений: 3,293
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
UNIX-way
712 / 495 / 49
Регистрация: 15.01.2009
Сообщений: 1,720
03.06.2009, 00:12 8
Я имел в виду что код по своей мысли правильный. Но, конечно, его надо исправить. Её оишбку я указал.
0
3071 / 313 / 5
Регистрация: 02.06.2009
Сообщений: 3,293
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
577 / 571 / 65
Регистрация: 29.01.2009
Сообщений: 1,274
03.06.2009, 00:52 10
Цитата Сообщение от nynicue Посмотреть сообщение
И ещё вместо int a[100] будет лучше int a[]={0};
Вот это вряд ли. Ты тем самым выделяешь массив на 1 элемент, и если вводиться в него будет больше 1го элемента, то прога может обратиться к неизвестно чьей памяти и с радостью вылететь.
0
829 / 352 / 64
Регистрация: 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
3071 / 313 / 5
Регистрация: 02.06.2009
Сообщений: 3,293
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
692 / 383 / 51
Регистрация: 22.01.2009
Сообщений: 1,135
03.06.2009, 01:12 13
Нет... размер задается сразу... т.е. например у массива int arr[] = {1,2,3,4,5} размерность 5 будет...
0
577 / 571 / 65
Регистрация: 29.01.2009
Сообщений: 1,274
03.06.2009, 01:18 14
Цитата Сообщение от nynicue Посмотреть сообщение
может быть я не права, но это означает что в начале все n's елементы ( [] оставляем пустым так как мы ещё не знаем кол!во п елементов) будут иметь value of '0'
Не правы. Читайте внимательно про инициализацию массивов http://masterpc.alfaspace.net/... ing/4/#p49

Добавлено через 2 минуты 23 секунды
Цитата Сообщение от nynicue Посмотреть сообщение
Нет ты не прав, это будет давать возможность ввести любое кол во елементов
Я уже говорил, запись будет происходить пока не нарвешься на кем-то занятую память.
0
3071 / 313 / 5
Регистрация: 02.06.2009
Сообщений: 3,293
03.06.2009, 01:23 15
прошу прощения, была не права
0
2 / 2 / 1
Регистрация: 17.05.2009
Сообщений: 22
04.06.2009, 10:16 16
Я думаю сравнение лучше проводить сразу при вводе массива:

C++
1
2
3
4
5
6
7
8
9
10
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 элемент массива, либо минимальное число разрешонное выбранным типом данных.
0
2 / 2 / 0
Регистрация: 18.03.2009
Сообщений: 36
05.06.2009, 20:52  [ТС] 17
Товарищи программисты....не забывайте, что я еще только учусь....и ошибка для начала в том, что программа запрашивает больше элементов, чем положено
0
05.06.2009, 20:52
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.06.2009, 20:52
Помогаю со студенческими работами здесь

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

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

Найти максимальный элемент массива и вывести последний четный элемент
Короче нужно чтобы програма нашла максимальный елемент масива и выводила на екран последное четное...

Поменять местами минимальный элемент с первым элементом массива, а максимальный элемент с последним
Здравствуйте. Помогите пожалуйста написать программу: для поиска минимального и максимального...


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

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