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

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

Войти
Регистрация
Восстановить пароль
 
Ellesar
0 / 0 / 0
Регистрация: 20.11.2009
Сообщений: 11
#1

одномерный массив - C++

22.11.2009, 23:59. Просмотров 502. Ответов 7
Метки нет (Все метки)

в одномерном массиве, состоящем из n целых элементов, вычислить
сумму элементов массива, расположенных последнего элемента равного нулю
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.11.2009, 23:59     одномерный массив
Посмотрите здесь:

Матрица и одномерный массив (Составить одномерный массив, содержащий количество буквенных символов в каждом из ее столбцов, подсчет символов) - C++
Помогите решить задачку: Дана матрица 5х7, элементами которой являются значения символьного типа. Составить одномерный массив, содержащий...

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

Массив: Все элементы массива, кратные трем, записать в одномерный массив. - C++
Дан двумерный массив размером n x n? заполненный целыми числами. Все его элементы кратные трем, записать в одномерный массив.

Переписать произвольный одномерный массив в другой массив в обратном порядке - C++
Помогите написать прогу, вот задание. Переписать произвольный одномерный массив в другой массив в обратном порядке.

Создать одномерный массив, заполнить его случайными значениями, отсортировать массив по убыванию - C++
создать одномерный массив, заполнить его случайными значениями, отсортировать массив по убыванию. получилось вот что: #include...

Дан двумерный массив размерностью Н. сформировать одномерный массив из элементов заданного массива расположенных над главной диагональю. - C++
помогите решить=)Дан двумерный массив размерностью Н. сформировать одномерный массив из элементов заданного массива расположенных над ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Esc
4 / 4 / 1
Регистрация: 16.11.2009
Сообщений: 19
23.11.2009, 00:17     одномерный массив #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include "iostream.h"
#include "conio.h"
void main()
{
double mas[20],sum=0;
int i,n,k;
cout<<"vvedite kol-vo elementov\n";
cin>>n;
for(i=0;i<n;i++)
cin>>mas[i];
for(i=n;i>=0;i--) {
       if (mas[i]==0) {
     k=i;  //сохраняем индекс последнего нулевого элемента
     break;
    }
      }
for(i=0;i<k;i++) //суммируем до индекса последнего нулевого элемента
sum=sum+mas[i];
cout<<"summa="<<sum;
getch();
}
Андрейка
419 / 223 / 27
Регистрация: 25.03.2009
Сообщений: 744
23.11.2009, 00:22     одномерный массив #3
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <numeric>
#include <algorithm>
#include <vector>
int main()
{
    int arr[] = {1,2,0,3,4,0,5,0,6,7};
    std::vector<int>vec(arr,arr+sizeof(arr)/sizeof(*arr));
    std::cout<<std::accumulate(std::find(vec.rbegin(),vec.rend(),0).base(),vec.end(),0);
    return 0;
}
easybudda
Эксперт С++
9456 / 5469 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
23.11.2009, 01:01     одномерный массив #4
Цитата Сообщение от Esc Посмотреть сообщение
for(i=n;i>=0;i--) { if (mas[i]==0) {
Сразу вылет за границу массива
C++
1
for(i=n-1;i>=0;i--)
Esc
4 / 4 / 1
Регистрация: 16.11.2009
Сообщений: 19
23.11.2009, 20:05     одномерный массив #5
ой,сорри,ошибся)))
и строки 11-16 лучше заменить на это:
C++
1
2
3
4
for(i=0;i<n;i++) {
       if (mas[i]==0)
     k=i;
       }
tripual
Сообщений: n/a
23.11.2009, 23:39     одномерный массив #6
Я писал в Microsoft Visual C++ 6.0 на C так:

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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#include <stdio.h>
#include <conio.h>
#include <malloc.h>
#include<stdlib.h>
 
int CalcSumAfterLastZero (int, int*);
void main()
 
{
    fflush(stdin);
    int *x;
    int i, n, nulls;
 
    printf ("Please input the number of elements in massif: ");
    scanf ("%d",&n);
    printf ("\n");
 
x = new int [n];
if (x == NULL) {
puts("Out of memory");
exit(0);            
}     
 
f:   for (i=0; i<n; i++){
    printf ("Input a[%d]: ",i);
    scanf("%d", x+i);
}
nulls=0;
for (i=0; i<n; i++) 
if (*(x+i)==0)
nulls=1;
 
if (nulls==1)
{
CalcSumAfterLastZero (n, x);
}
else 
{
    printf ("There are no zeros inputted\n");
    goto f;
}
 
delete [ ]x;
 
}
 
 
////////////////////////////////////////////////////////////////////////////////////////////////////////
 
int CalcSumAfterLastZero (int n, int *x)
 
{
int sum, i;
    sum=0;
 
for (i=0;i<n;i++)
{
if (*(x+i)>0||*(x+i)<0)
{
    sum=sum+*(x+i);
}
else 
{
    
    if (*(x+i)==0)
    {sum=0;
    sum=sum+*(x+i);}
        
}
}
printf("The sum of elements located after the last zero element is: %d\n", sum);
printf ("\n");
 
return sum;
}
easybudda
Эксперт С++
9456 / 5469 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
24.11.2009, 01:02     одномерный массив #7
Цитата Сообщение от Ellesar Посмотреть сообщение
в одномерном массиве, состоящем из n целых элементов, вычислить
сумму элементов массива, расположенных последнего элемента равного нулю
Для конкурса на самую запутанную программу
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
#include <stdio.h>
 
#define N 10
int main(void){
    int arr[N] = { 3, 5, 0, 4, 1, 0, 7, 2, 0, 33 };
    int *pArr, summ;
    
    summ = 0;
    
    for ( pArr = arr + N - 1; pArr > arr && *pArr; pArr-- )
        ;
    if ( pArr == arr ){ /* нет нулевых элементов, или первый элемент равен 0 */
        if ( !(*pArr) ){ /* первый элемент 0, считать нечего */
            printf("Last and only zero element is first element of array\n");
            return 0;
        }   
        for ( ; pArr < arr + N; pArr++ )
            summ += *pArr;
    }
    else{
        for ( pArr -= 1; pArr >= arr; pArr-- ){
            printf( (pArr > arr) ? "%d + " : "%d = ", *pArr);
            summ += *pArr;
        }
        printf("%d\n", summ);
    }
    
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.11.2009, 15:39     одномерный массив
Еще ссылки по теме:

Одномерный массив (Ввести массив из 10 вещественных чисел.Найти сумму чисел,стоящих на чётных местах) - C++
Ввести массив из 10 вещественных чисел.Найти сумму чисел,стоящих на чётных местах. Обьясните что делать?

Одномерный массив. Создать массив Х суммы среднеарифметического элементов массива А с каждым элементом массива А - C++
Дан массив А.Создать массив Х суммы среднеарифметического элементов массива А с каждым элементом массива А.

Преобразовать одномерный массив вещественных случайных чисел в массив целых чисел - C++
Преобразовать одномерный массив вещественных случайных чисел в массив целых чисел больших исходных на два порядка. Напечатать массивы в два...

Одномерный массив. - C++
Здраствуйте уважаемые програмисты помогите с решением задач... Составить программу для подсчёта суммы и количества элементов линейной...


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

Или воспользуйтесь поиском по форуму:
easybudda
Эксперт С++
9456 / 5469 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
24.11.2009, 15:39     одномерный массив #8
поправил
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
#include <stdio.h>
 
#define N 10
int main(void){
    int arr[N] = { 3, 5, 4, 4, 1, 2, 0, 2, 0, 33 };
    int *pArr, summ;
        
    summ = 0;
        
    for ( pArr = arr + N - 1; pArr > arr && *pArr; pArr-- )
                ;
    if ( pArr == arr ){ /* нет нулевых элементов, или первый элемент равен 0 */
        if ( !(*pArr) ){ /* первый элемент 0, считать нечего */
            printf("Last and only zero element is first element of array\n");
            return 0;
        } 
        else{      
            for ( ; pArr < arr + N; pArr++ ){
                printf( ( pArr < arr + N - 1 ) ? "%d + " : "%d = ", *pArr);
                summ += *pArr;
            }
            printf("%d\n", summ);
        }
    }
    else{
        for ( pArr -= 1; pArr >= arr; pArr-- ){
            printf( (pArr > arr) ? "%d + " : "%d = ", *pArr);
            summ += *pArr;
        }
        printf("%d\n", summ);
    }
        
    return 0;
}
немного, а то без 0 в массиве вообще ничего не выводилось
Yandex
Объявления
24.11.2009, 15:39     одномерный массив
Ответ Создать тему
Опции темы

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