0 / 0 / 0
Регистрация: 27.05.2012
Сообщений: 30
1

массив

27.05.2012, 20:07. Показов 704. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, нужна помощь в решении задачи. Условие: в одномерном массиве состоящем из n элементов, вычислить сумму элементов между первым и последним нулевыми элементами.
Желательно написать готовое решение на С++
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.05.2012, 20:07
Ответы с готовыми решениями:

Массив: Преобразовать массив, прибавив к четным числам, входящим в массив, значение первого элемента.
Есть задача С клавиатуры вводятся элементы целочисленного массива размера N. Преобразовать его, прибавив к четным числам, входящим в...

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

Ввести массив А. В массив В перенести все элементы массива А, стоящие правее максимального элемента, и имеющие нечетный индекс. Массив В отсортировать
Добрый Вечер! Написал первую часть программы по этому заданию"Ввести массив А. В массив В перенести все элементы массива А, стоящие правее...

12
 Аватар для insolent
829 / 353 / 64
Регистрация: 30.01.2009
Сообщений: 1,204
27.05.2012, 20:51 2
С использованием STL можно было все красиво сделать в пару строк, но думаю, что вам нужно без заумности.
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
37
38
39
#include <iostream>
 
int main()
{
    int arr[] = { 1, 2, 0, 4, 5, 6, 0, 7, 8, 9, 10, 0, 3, 2, 11, 0, 8, 2, 0, 5, 6, 4 };
    int n = sizeof(arr)/sizeof(arr[0]);
 
    std::cout << "=======ARRAY=======" << std::endl;
    for (int i = 0; i < n; i++)
        std::cout << arr[i] << "  ";
 
    std::cout << std::endl;
 
    int firstZero, lastZero;
 
    for (int i = 0; i < n; i++)
        if ( arr[i] == 0 )
        {
            firstZero = i;
            break;
        }
 
    for (int i = n-1; i > 0; i--)
        if ( arr[i] == 0 )
        {
            lastZero = i;
            break;
        }
 
    int Sum = 0;
    for (int i = firstZero; i < lastZero; i++)
        Sum += arr[i];
 
    std::cout << "Position of the first zero element: " << firstZero << std::endl;
    std::cout << "Position of the last zero element: " << lastZero << std::endl;
    std::cout << "Sum: " << Sum << std::endl;
 
    return 0;
}
1
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
27.05.2012, 21:03 3
1 цикла хватит за глаза
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
 
int main()
{
    int arr[] = { 1, 2, 0, 4, 5, 6, 0, 7, 8, 9, 10, 0, 3, 2, 11, 0, 8, 2, 0, 5, 6, 4 };
    int sum = 0, tmpsum;
    bool b = false;
    const int n = sizeof(arr) / sizeof(*arr);
    for (int i=0; i < n; i++)
    {
        if(b) tmpsum += arr[i];
        if (arr[i] == 0)
        {
            if(!b) b = true;
            else {sum += tmpsum; tmpsum = 0; }
        }
        std::cout<< arr[i]<< " ";
    }
    std::cout<< "\nSum: "<< sum;
    return 0;
}
0
0 / 0 / 0
Регистрация: 27.05.2012
Сообщений: 30
27.05.2012, 21:08  [ТС] 4
спасибо, но мне кажется что программа не так считает сумму, хотя я могу и ошибаться...
0
122 / 85 / 16
Регистрация: 14.02.2011
Сообщений: 340
27.05.2012, 21:10 5
Цитата Сообщение от MrGluck Посмотреть сообщение
const int n = sizeof(arr) / sizeof(*arr)
Цитата Сообщение от insolent Посмотреть сообщение
int n = sizeof(arr)/sizeof(arr[0]);
господа, а не лучше ли писать sizeof(ТИП) из которого сделан массив.
C++
1
2
int arr[] = {}; size = sizeof(arr) / sizeof(int);
char arr[] = {}; size = sizeof(arr) / sizeof(char);
???
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
27.05.2012, 21:12 6
Цитата Сообщение от Sivrit Посмотреть сообщение
спасибо, но мне кажется что программа не так считает сумму, хотя я могу и ошибаться...
Лично я проверил устным счетом. А это так сложно?

Добавлено через 1 минуту
Цитата Сообщение от instagib Посмотреть сообщение
господа, а не лучше ли писать sizeof(ТИП) из которого сделан массив.
C++
1
2
int arr[] = {}; size = sizeof(arr) / sizeof(int);
char arr[] = {}; size = sizeof(arr) / sizeof(char);
???
А зачем? Как бы первый элемент массива как раз имеет размер нужного типа. Иначе можно вобще писать не sizeof(int), а 4. А так это безопасный вариант.
0
122 / 85 / 16
Регистрация: 14.02.2011
Сообщений: 340
27.05.2012, 21:16 7
MrGluck, на 32битныйх машинах, указатель вроде как 2 байта. Любой указатель, что на инт что на чар что на структуру, верно?
в случае
C++
1
2
char arr[20];
unsigned int size = sizeof(arr) / sizeof(*arr);
у вас должно получиться 10 элементов. Поправьте меня если я не прав.
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
27.05.2012, 21:18 8
Цитата Сообщение от instagib Посмотреть сообщение
MrGluck, на 32битныйх машинах, указатель вроде как 2 байта. Любой указатель, что на инт что на чар что на структуру, верно?
в случае
C++
1
2
char arr[20];
unsigned int size = sizeof(arr) / sizeof(*arr);
у вас должно получиться 10 элементов. Поправьте меня если я не прав.
*arr это не указатель, это arr[0] (int)
1
 Аватар для Toshkarik
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
27.05.2012, 22:07 9
Цитата Сообщение от instagib Посмотреть сообщение
на 32битныйх машинах, указатель вроде как 2 байта
32 битные машины - 32 бита - 32 битные указатели - 32 / 8 == 4. Ну никак не могут они быть 2 байта.
1
0 / 0 / 0
Регистрация: 27.05.2012
Сообщений: 30
28.05.2012, 11:45  [ТС] 10
помогите реализовать эту функцию через шаблоны
0
 Аватар для Toshkarik
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
28.05.2012, 13:34 11
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
template< typename T >
T sum( T *array, const int size ) {
   int firstZero = 0,
       lastZero = size - 1,
       sum = 0;
 
   while ( array[ firstZero ] != 0 && firstZero < size )
      firstZero++;
   
   while ( array[ lastZero ] != 0 && lastZero > 0 )
      lastZero--;
 
   for ( int i = firstZero + 1; i < lastZero; i++ )
      sum += array[ i ];
 
   return sum;
}
2
122 / 85 / 16
Регистрация: 14.02.2011
Сообщений: 340
28.05.2012, 21:25 12
Sivrit, какую функцию, покажи код

//////// блин лаг,

Не по теме:

у меня отобразилось сообщение в другой теме O_o delete pls))))

0
0 / 0 / 0
Регистрация: 27.05.2012
Сообщений: 30
28.05.2012, 22:28  [ТС] 13
instagib, Уже все готово, всем спасибо за помощь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.05.2012, 22:28
Помогаю со студенческими работами здесь

Массив: Как скопировать двумерный массив в другой массив?
Как скопировать двумерный массив в другой массив?

Дан массив целых чисел,произвести для него следующие операции: для каждого из чисел ,входящего в массив,указать,сколько раз оно входит в массив...
помогите!!!((( дан массив целых чисел,произвести для него следующие операции: для каждого из чисел ,входящего в массив,указать,сколько...

Файл: Загрузка данных из файла: первый столбец записывался в 1й массив, второй столбец - во 2й массив, а 3й столбец - в 3й массив.
Есть текстовый файл, в нем 3 столбца чисел (число строк заранее неизвестно). Напишите пожалуйста код, чтобы первый столбец записывался в...

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

Массив: найти номера столбцов с положительными элементами и записать их в одномерный массив
ввести двумерный массив I . найти номера столбцов с положительными элементами и записать их в одномерный массив, отобразить его на экране. ...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

Новые блоги и статьи
Введение в Dapr для разработчиков .NET
UnmanagedCoder 18.03.2025
Разработка распределенных систем никогда не была настолько востребованной и одновременно такой сложной. Если вы . NET разработчик, то наверняка сталкивались с необходимостью жонглировать обнаружением. . .
Собеседование по Spring Boot: продвинутые вопросы и ответы
Javaican 18.03.2025
Собеседования на позиции старших разработчиков и архитекторов требуют глубокого понимания внутренних механизмов Spring Boot, нюансов конфигурирования, подходов к оптимизации и построению сложных. . .
Перечисления в TypeScript: использование и лучшие практики
run.dev 18.03.2025
Пишете код и устали от разбросанных по проекту "волшебных" строк и чисел? Знакомая ситуация: где-то в глубине кода притаилась строка "ADMIN", а в другом месте используется "admin". И вот уже. . .
Фишки Kotlin, которые все любят
Javaican 18.03.2025
Помню, как скептически относился к появлению "ещё одного языка для JVM" — мол, зачем нам что-то новое, когда есть Java? Но первый же проект на Kotlin заставил меня пересмотреть свое мнение. Код стал. . .
Списки и кортежи в Python: различия, особенности, применение
py-thonny 18.03.2025
Если вы когда-нибудь писали код на Python, то наверняка сталкивались с конструкциями вида или ('имя', 25, 'инженер'). Это и есть списки и кортежи — последовательности, хранящие упорядоченные наборы. . .
Интеграция JavaScript в Haskell
golander 18.03.2025
Ключевая особенность нового JS-бэкенда GHC — возможность создавать колбэки из JavaScript в Haskell-код. Это открывает дорогу разработке полноценных браузерных приложений, позволяя реагировать на. . .
Циклы for в Python
py-thonny 17.03.2025
Существует множество ситуаций, когда нам нужно выполнить одно и то же действие несколько раз. Цикл for в Python — настоящий рабочий конь для большинства программистов. Если вам нужно пройтись по всем. . .
Предсказание ветвлений - путь к высокопроизводи­тельному C++
NullReferenced 17.03.2025
В высокопроизводительном программировании на C++ каждый такт процессора на счету. Когда речь заходит о разработке систем с низкой задержкой — будь то высокочастотная торговля, обработка потоковых. . .
Паттерн CQRS в C#
UnmanagedCoder 17.03.2025
Создание сложных корпоративных приложений часто требует нестандартных подходов к архитектуре. Один из таких подходов — паттерн CQRS (Command Query Responsibility Segregation), предлагающий простую,. . .
Паттерн Цепочка ответственности в C#
UnmanagedCoder 17.03.2025
Цепочка ответственности — это поведенческий паттерн проектирования, который позволяет передавать запросы последовательно по цепочке потенциальных обработчиков, пока один из них не обработает запрос. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru