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

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

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

Author24 — интернет-сервис помощи студентам
в одномерном массиве, состоящем из n целых элементов, вычислить
сумму элементов массива, расположенных последнего элемента равного нулю
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.11.2009, 23:59
Ответы с готовыми решениями:

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

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

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

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

7
4 / 4 / 2
Регистрация: 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();
}
0
425 / 229 / 87
Регистрация: 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;
}
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12454 / 7479 / 1752
Регистрация: 25.07.2009
Сообщений: 13,755
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--)
0
4 / 4 / 2
Регистрация: 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;
       }
0
tripual
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;
}
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12454 / 7479 / 1752
Регистрация: 25.07.2009
Сообщений: 13,755
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;
}
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12454 / 7479 / 1752
Регистрация: 25.07.2009
Сообщений: 13,755
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 в массиве вообще ничего не выводилось
0
24.11.2009, 15:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.11.2009, 15:39
Помогаю со студенческими работами здесь

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

Целочисленный массив с размером 4*4 .Написать прогу , формирующую одномерный массив
Целочисленный массив с размером 4*4 .Написать прогу , формирующую одномерный массив. #include...

Сгенерировать одномерный массив A в диапазоне [-20; 20] и сформировать новый массив B из отрицательный элементов массива
Здравствуйте. Помогите, пожалуйста, дорешать задачу. Нужно сгенерировать одномерный массив A в...

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


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

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

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