Найти сумму элементов одномерного массива, расположенных после последнего элемента, равного нулю
Задачи для программиста. Массив создается в динамической области памяти функцией new. При обращении к элементам массива воспользоваться взаимосвязью массивов
Массив создается в динамической области памяти функцией new. При обращении к элементам массива воспользоваться взаимосвязью массивов с указателями (косвенная адресация). Предусмотреть реакцию программы на ситуации, при которых задача не имеет решения. В одномерном массиве, состоящем из n вводимых с клавиатуры элементов, вычислить:
Сумму элементов массива, расположенных после последнего элемента, равного нулю.
Код C
#include <stdio.h> #include <conio.h> #include <process.h> #include <locale.h> #include <string.h> void vvod (char*, int*); void vivod (char*, int*); int sum (char*, int*); int i, n, nul, position=0; void main() {setlocale(LC_CTYPE, "Russian"); system("cls"); fflush(stdin); char *A, sumA; //Заполняем массив puts ("Введите размерность массива:"); scanf_s("%d", &n); A=new char [n]; puts("Введите значения массива:"); vvod(A, &n); //Ищем наш ноль nul=0; for (i=0; i<n; i++) {if(!(*(A+i))) { nul = i; position=i; } } //Выводим на экран printf("\n\nВот наш полный массив:"); vivod(A, &n); printf("\n\nЗначения, расположенные после последнего нуля:"); for (i=position+1; i<n; i++) {printf_s(" %d ", *(A+i));} sumA=sum(A, &n); printf("\n\nCумма этих значений: %d", sumA); _getch(); } //Ф-я для ввода значений массива void vvod(char*A, int*n) { for (i=0; i<*n; i++) {printf("\nЗначение[%d]=",i); scanf_s("%d", A+i);} } //Ф-я для вывода значений массива void vivod(char*A, int*n) { for(i=0; i<*n; i++) {printf(" %d ",*(A+i));} } //Считаем сумму значений после найденного последнего нуля int sum(char*A, int *n) { int sum=0; for (i=position; i<*n; i++) {sum+=*(A+i);} return sum; }