Указатели, нужно создать динамический масив и подсчитать сумму - C (СИ)

Узнай цену своей работы

Формулировка задачи:

нужно создать динамический масив и подсчитать сумму елементов больше 0
#include "stdafx.h"
#include "stdlib.h"
#include "stdio.h"

int _tmain(int argc, _TCHAR* argv[])
{
    int i,k,*a,c=0,sum=1;
    a=(int*)calloc(100,sizeof(int));
    if (!a)
    {
        return 0;
    }
    
printf("     Matrix     \n");
    for (i=0;i<100;i++)
    {
        *(a+i)=rand()%125-25;
        printf(" %3d\t",*(a+i));
        if ((*(a+i))>0)
        {
            k=*(a+i);
            sum*=k;
            
        }
    }
    printf("\n%d\n",sum);
    free(a);
    return 0; 
}
В чём проблема, прошу обясните!!
 k=*(a+i); sum*=k;
или
 sum*=*(a+i);
ничего не даёт, скажите как выйти с такого положения???

Решение задачи: «Указатели, нужно создать динамический масив и подсчитать сумму»

textual
Листинг программы
#include "stdafx.h"
#include "stdlib.h"
#include "stdio.h"
#include <iostream.h>
 
int _tmain(int argc, _TCHAR* argv[])
{
 int *p, *e, *a, summ, n;
 std::cin>>n;
 a=new int [n];
 if (!a)
 {
  return 0;
 }        
 std::cout<<"     Matrix     "<<endl;
 for (p=a, e=a+n-1, summ=0; p<=e; ++p)
 {
  *p=rand()%125-25;
  std::cout<<"\t"<<*p;
  if (*p>0)
  {
   summ+=*p;                        
  }
 }
 std::<<cout<<summ;
 delete [] a;
 return 0; 
}

Объяснение кода листинга программы

Объяснение кода:

  1. #include stdafx.h, #include stdlib.h, #include stdio.h, #include - эти строки подключают необходимые библиотеки для работы с памятью, вводом/выводом и генерацией случайных чисел.
  2. *int _tmain(int argc, _TCHAR argv[])** - это функция, которая является точкой входа в программу.
  3. *int p, e, a, summ, n;** - это объявление переменных. Переменная p используется как указатель на текущий элемент массива, e - на последний элемент массива, a - на массив, summ - для хранения суммы элементов массива, n - для хранения размера массива.
  4. std::cin>>n; - считывание размера массива из ввода пользователя.
  5. a=new int [n]; - выделение памяти под массив a размером n. Если память не может быть выделена, программа завершается.
  6. if (!a) - проверка, удалось ли выделить память под массив.
  7. std::cout<<    Matrix    <<endl; - вывод заголовка Matrix.
  8. for (p=a, e=a+n-1, summ=0; p<=e; ++p) - это цикл, который проходит по всем элементам массива. p и e используются как указатели на начало и конец диапазона элементов массива. summ инициализируется нулем.
  9. *p=rand()%125-25; - генерация случайного числа в диапазоне от -25 до 124 и присваивание его элементу массива.
  10. *std::cout<<\t<<p;** - вывод значения элемента массива с добавлением символа табуляции для форматирования.
  11. *if (p>0)** - проверка, является ли значение элемента массива положительным.
  12. *summ+=p;** - добавление значения элемента массива к сумме.
  13. std::<<cout<<summ; - вывод суммы.
  14. delete [] a; - освобождение памяти, выделенной под массив.
  15. return 0; - завершение программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.714 из 5
Похожие ответы