Найти сумму всех элементов массива - 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;
}
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы: stdio.h, stdlib.h, time.h
- Определяются значения a и b. Значение a принимается равным -2, а b - переменной, которую будет использовать генератор случайных чисел.
- Задаются значения переменных n и m. Пользователю предлагается ввести число n, затем число m.
- Выделяется память под массивы A и B с помощью функций malloc.
- Генерируются случайные значения для элементов массивов A и B с помощью функции rand и оператора /.
- Суммируются все элементы массива A с помощью цикла for и переменных sA и i.
- Суммируются все элементы массива B с помощью цикла for и переменных sB и i.
- С помощью условного оператора if выводится сумма sA и элементы массива A.
- Выводится сумма sB.
- С помощью условного оператора if выводится сумма sA и элементы массива A.
- Освобождается память, выделенная под массивы A и B с помощью функций free.
- Вводится пауза с помощью функции system(
pause). - Возвращается 0, что означает успешное завершение программы.