Найти сумму всех элементов массива - C (СИ)

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

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

Заданы два случайных вещественных массива А(n) и B(m) со значениями от -2 до 2. Первым на печать вывести массив, сумма значений которого окажется наименьшей. почему не получается сумма вроде все нормально написал?
#include <stdio.h>
#include<locale.h>
#include <math.h>
#include <stdlib.h>
#include <time.h>
#define _USE_MATH_DEFINES
#define a -2
#define b 2
 
int main( int argc, char**argv)
{   
    int n, m;
    int i=0;
    double *A;
    double *B;
    double s=0;
    double s1=0;
    double sn=1.0;
    srand( time( 0 ) );
    printf ("Enter n:");
    scanf ("%d",&n);
    printf ("Enter m:");
    scanf ("%d",&m);
printf("A \n");
    A=(double*)malloc(n*sizeof(double));
    for(i = 0; i<n; i++)
    {
        A[i]=rand()/(double)RAND_MAX*(b - a) + a;
        printf("%lg\n", A[i]);
    }
    printf("s(A) \n");
    for(i=0; i<n; i++)
    { 
     s+=A[i];
      printf("%lg\n", s);
    }
    printf("B \n");
    B=(double*)malloc(m*sizeof(double));
    for(i = 0; i<m; i++)
    {
        B[i]= rand()/(double)RAND_MAX*(b - a) + a;
        printf("%lg\n",B[i] );
     }
    printf("s(B) \n");
    for(i=0; i<n; i++)
    {
     s1+=s1+B[i];
     printf("%lg\n", s1);
    }
    system("pause");
    free (A);
    free (B);
    return 0;
}

Решение задачи: «Найти сумму всех элементов массива»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define a -2
#define b 2
 
int main( int argc, char**argv)
{
    int n, m;
    int i=0;
    double *A;
    double *B;
    double sA=0;
    double sB=0;
    double sn=1.0;
    srand( time( 0 ) );
    printf ("Enter n:");
    scanf ("%d",&n);
    printf ("Enter m:");
    scanf ("%d",&m);
    
    A=(double*)malloc(n*sizeof(double));
    B=(double*)malloc(m*sizeof(double));
 
    for(i = 0; i < n; i++) {
        A[i]=rand() / (double)RAND_MAX * (b - a) + a;
    }
 
    for(i = 0; i < m; i++){
        B[i]= rand() / (double)RAND_MAX * (b - a) + a;
    }
 
 
    for(i = 0; i < n; i++){
        sA +=A[i];
    }
 
    for(i = 0; i < m; i++){
        sB +=B[i];
    }
 
    if(sA < sB){
        printf("\ns(A) = %lg \n", sA);
        for(i = 0; i < n; i++){
            printf("%lg \n", A[i]); 
        }
    }
    
    printf("\ns(B) = %lg \n", sB);
    for(i = 0; i < m; i++){
        printf("%lg \n", B[i]); 
    }
    
    if(sA >= sB){
        printf("\ns(A) = %lg \n", sA);
        for(i = 0; i < n; i++){
            printf("%lg \n", A[i]); 
        }
    }
 
    free (A);
    free (B);
 
    system("pause");
    return 0;
}

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

  1. Включаются необходимые заголовочные файлы: stdio.h, stdlib.h, time.h
  2. Определяются значения a и b. Значение a принимается равным -2, а b - переменной, которую будет использовать генератор случайных чисел.
  3. Задаются значения переменных n и m. Пользователю предлагается ввести число n, затем число m.
  4. Выделяется память под массивы A и B с помощью функций malloc.
  5. Генерируются случайные значения для элементов массивов A и B с помощью функции rand и оператора /.
  6. Суммируются все элементы массива A с помощью цикла for и переменных sA и i.
  7. Суммируются все элементы массива B с помощью цикла for и переменных sB и i.
  8. С помощью условного оператора if выводится сумма sA и элементы массива A.
  9. Выводится сумма sB.
  10. С помощью условного оператора if выводится сумма sA и элементы массива A.
  11. Освобождается память, выделенная под массивы A и B с помощью функций free.
  12. Вводится пауза с помощью функции system(pause).
  13. Возвращается 0, что означает успешное завершение программы.

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


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

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

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