Найти сумму всех элементов массива - 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, что означает успешное завершение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д