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

Массивы. Указатели. Обработка одномерных массивов - C++

Восстановить пароль Регистрация
 
Bakinowski Wlad
1 / 1 / 0
Регистрация: 08.10.2013
Сообщений: 155
28.10.2013, 15:59     Массивы. Указатели. Обработка одномерных массивов #1
Определите сумму элементов массива, расположенных до максимального.
Не вводить максимальный элемент, а находить его)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
28.10.2013, 16:07     Массивы. Указатели. Обработка одномерных массивов #2
Как то так наверное

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
const size_t SIZE=10;
int array[SIZE]={1,2,3,4,5,6,10,7,8,9};
int max=0;
int sum=0;
 
for(int i=0;i<SIZE;++i)
   if(array[i]>max)
       max=array[i];
 
int i=0;
while(array[i]!=max && i<SIZE)
{
    sum+=array[i]; ++i;
}
Bakinowski Wlad
1 / 1 / 0
Регистрация: 08.10.2013
Сообщений: 155
28.10.2013, 16:16  [ТС]     Массивы. Указатели. Обработка одномерных массивов #3
Цитата Сообщение от egor2116 Посмотреть сообщение
Как то так наверное

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
const size_t SIZE=10;
int array[SIZE]={1,2,3,4,5,6,10,7,8,9};
int max=0;
int sum=0;
 
for(int i=0;i<SIZE;++i)
   if(array[i]>max)
       max=array[i];
 
int i=0;
while(array[i]!=max && i<SIZE)
{
    sum+=array[i]; ++i;
}
в первом случаи вы проверяете все числа до максимального, а во втором на сумму?
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
28.10.2013, 16:20     Массивы. Указатели. Обработка одномерных массивов #4
Находим максимальное до которого будем суммировать
C++
1
2
3
for(int i=0;i<SIZE;++i)
  if(array[i]>max)
 max=array[i]; // переменная max содержит максимальное значение массива
Суммируем ...
C++
1
2
3
4
5
int i=0;
while(array[i]!=max && i<SIZE) // до максимального просматриваем массив
{
    sum+=array[i]; ++i; //суммируем все значение до максимального в переменную sum
}
Bakinowski Wlad
1 / 1 / 0
Регистрация: 08.10.2013
Сообщений: 155
28.10.2013, 16:23  [ТС]     Массивы. Указатели. Обработка одномерных массивов #5
когда я его выполняю, то пишет "нажмите любую клавишу"
по идеи должно же что-то произойти? или нет?
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
28.10.2013, 16:25     Массивы. Указатели. Обработка одномерных массивов #6
хах

А что нужно что бы произошло?
Если вывести на экран то допишите строку
C++
1
cout<<"Сумма элементов массива до максимального ="<<max<<endl;
Bakinowski Wlad
1 / 1 / 0
Регистрация: 08.10.2013
Сообщений: 155
28.10.2013, 16:30  [ТС]     Массивы. Указатели. Обработка одномерных массивов #7
не хочу показаться тупым, но появляются какие-то иероглифы и число 10)

Добавлено через 1 минуту
прошу прощения, не то посмотрел))
спасибо за помощь!!!!)))
Extrim88
 Аватар для Extrim88
50 / 50 / 11
Регистрация: 08.02.2013
Сообщений: 189
28.10.2013, 16:32     Массивы. Указатели. Обработка одномерных массивов #8
Универсальнее через динамический массив делать. Пользователь сможет самостоятельно выбрать размер массива. И далее заполнять его случайными числами в диапазоне например -100 - 100. Можно также написать какую-нибудь функцию, которая принимает в качестве параметров этот массив и его размер и возвращает индекс максимального элемента.
Bakinowski Wlad
1 / 1 / 0
Регистрация: 08.10.2013
Сообщений: 155
28.10.2013, 16:33  [ТС]     Массивы. Указатели. Обработка одномерных массивов #9
Цитата Сообщение от Extrim88 Посмотреть сообщение
Универсальнее через динамический массив делать. Пользователь сможет самостоятельно выбрать размер массива. И далее заполнять его случайными числами в диапазоне например -100 - 100. Можно также написать какую-нибудь функцию, которая принимает в качестве параметров этот массив и его размер и возвращает индекс максимального элемента.
динамический массив - пример можно??
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
28.10.2013, 16:35     Массивы. Указатели. Обработка одномерных массивов #10
Вместо русских букв напишите латинскими

и пардон не cout<< max , а надо sum

приведу весь код

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
 
using namespace std;
 
int main(){
 
const size_t SIZE=10;
int array[SIZE]={1,2,3,4,5,6,10,7,8,9};
int max=0;
int sum=0;
 
for(int i=0;i<SIZE;++i)
   if(array[i]>max)
       max=array[i];
 
int i=0;
while(array[i]!=max && i<SIZE)
{
    sum+=array[i]; ++i;
}
cout<<"Summa elementov do maximalnogo ="<<sum<<endl;
}
Добавлено через 1 минуту
Универсальнее через динамический массив делать. Пользователь сможет самостоятельно выбрать размер массива.
А через статический нельзя ? Да неужели ))
И расскажите в чем универсальность. Поведайте тайну.
Extrim88
 Аватар для Extrim88
50 / 50 / 11
Регистрация: 08.02.2013
Сообщений: 189
28.10.2013, 16:52     Массивы. Указатели. Обработка одномерных массивов #11
Ну, например.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int main()
{
int size; //здесь будем хранить размер динамического массива
 
...
cout << "Ввести размер массива: ";
cin >> size;
 
int* p_array = new int[size]; 
/*выделяем достаточное кол-во памяти для массива, 
возвращаем адрес этого блока памяти*/
 
...
//Далее используем указатель p_array как имя динамического массива
...
//Не забудем освободить блок памяти выделенный под массив
delete [] p_array;
return 0;
}
Добавлено через 11 минут
[quote="egor2116;5249277"]А через статический нельзя ? Да неужели ))
И расскажите в чем универсальность. Поведайте тайну.[/quo

Ну почему же нельзя, вполне можно. Просто пользы от такого массива будет меньше, да и память в большинстве случаев расходуется не эффективно. Про статическое и динамическое связывание что-нибудь слышали?

Если вы жестко закодировали массив int array[Size] = {1, 2, 3, 4};
память для него выделяется раз и навсегда - во время компиляции, будет ли такой массив востребован в программе или нет, программе уже неинтересно.

При использовании же динамического массива, ситуация гораздо интересней, поскольку массив создается во время выполнения программы. Это позволяет более эффективно использовать память.
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
29.10.2013, 10:00     Массивы. Указатели. Обработка одномерных массивов #12
Это позволяет более эффективно использовать память.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int main()
{
int size; //здесь будем хранить размер динамического массива
 
...
cout << "Ввести размер массива: ";
cin >> size;
 
int p_array[size];
/*выделяем достаточное кол-во памяти для массива, 
возвращаем адрес этого блока памяти*/
 
...
//Далее используем указатель p_array как имя динамического массива
...
 
return 0;
}
В условии задачи кажется не было про жесткое условие использование динамического массива. И ваша универсальность в данном элементарном примере просто смешна.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.10.2013, 10:18     Массивы. Указатели. Обработка одномерных массивов
Еще ссылки по теме:

C++ Обработка одномерных массивов. Сортировка массивов
Обработка одномерных массивов C++
Обработка одномерных массивов C++

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

Или воспользуйтесь поиском по форуму:
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,164
Завершенные тесты: 1
29.10.2013, 10:18     Массивы. Указатели. Обработка одномерных массивов #13
Кстати, по поводу экономии памяти.
Как Вы считаете, на что больше затратится памяти,
на
C++
1
char a[2];
или
C++
1
char *a=new char[2];
?
Yandex
Объявления
29.10.2013, 10:18     Массивы. Указатели. Обработка одномерных массивов
Ответ Создать тему
Опции темы

Текущее время: 02:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru