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

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

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

Язык C. Необходимо найти количество положительных значений в каждом массиве и вывести на печать первым массив, в котором это количество больше. - это сделал и все тут понятно. вопрос в последних шести строках кода. почему при первом выводе значений sca и scb они разные, а в if-е равны?
#include <stdio.h>
#include <conio.h>
#include <process.h>
#include <math.h>
#include <locale.h>
#include <malloc.h>
 
void main() 
 
        {
    
    int *a, i, *b, k, n, m;
    setlocale(LC_CTYPE, "Rus");
    system("cls");
    fflush(stdin);
    s1: printf("\nВведите размерность массива a, n=:");
    scanf("%d", &n);
    if(n<=0) 
    
    {
        puts("N должно быть больше нуля!");
        goto s1;
 
    }
 
    //printf("%d", n);
    if ((a = (int*)malloc(n*sizeof(int))) != NULL)
    {
 
        printf("\n Введите элементы массива a:\n");
        for(i=0; i<n; i++)
        
        {
                printf("a[%d] = ", i);
                scanf("%d", a+i);
            
                }
        }
 
    else 
    
    {
        puts("\nНе достаточно памяти!\n");
        goto s1;
    }
 
    s2: printf("\nВведите размерность массива b, m=");
    scanf("%d", &m);
    if(m<=0)
    
    {
        puts("M должно быть больше нуля!");
        goto s2;
    }
 
    if((b=(int*)malloc(m*sizeof(int))) != NULL) {
        printf("\n Введите элементы массива b:\n");
        for(k=0; k<m; k++)
    
        {
                printf("b[%d] = ", k);
                scanf("%d", b+k);
        
        }
 
    }
 
    else
    
    {
        puts("\nНе достаточно памяти\n");
        goto s2;
    
    }
    
    int sca = 0;
    for(i=0; i<n; i++) 
    
    {
    
        if(*(a+i) > 0) 
        sca++;
        printf("\nКолличество положительных элементов массива A - %d\n", sca);
        
    }
    
    int scb = 0;
    for(i=0; i<m; i++)
 
    {
        if(*(b+i) > 0)
            scb++;
            printf("\nКолличество положительных элементов массива B - %d\n", scb);
    }
    if(sca>scb)
    
    {
        puts("\nМассив A\n");
        for(i=0; i<n; i++)
        printf("\na[%d]=%5.d\n", i, *(a+i));
        puts("Массив B\n");
        for(i=0; i<m; i++)
        printf("b[%d]=%5.d\n", i, *(b+i));
        
    }
 
    if(sca<scb) 
    
    {
        puts("Массив B\n");
        for(i=0; i<n; i++)
        printf("\nb[%d]=%5.d\n", i, *(b+i));
        puts("Массив A\n");
        for(i=0; i<m; i++)
        printf("a[%d]=%5.d\n",i, *(a+i));
    }
    printf("\nsca=%d\nscb=%d\n", sca, scb);
    if(sca=scb)
    printf("\nКолличество положительных значений в массиве равно!\n sca=%d\n scb=%d\n", sca, scb);
    else 
        puts("Конец программы!");
        _getch();
    
}

Решение задачи: «Найти количество положительных значений в каждом массиве»

textual
Листинг программы
if(sca==scb)
    printf_s("\nКолличество положительных значений в массиве равно!\n sca=%d\n scb=%d\n", sca, scb);
    else 
        puts("Конец программы!");
        _getch();

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

  1. В условии if(sca==scb) происходит сравнение двух переменных sca и scb.
  2. Если условие if выполняется, то выводится сообщение с количеством положительных значений в массиве.
  3. В сообщении используется функция printf_s для вывода чисел.
  4. Если условие if не выполняется, то выводится сообщение Конец программы! с помощью функции puts.
  5. В конце программы используется функция _getch для остановки программы.

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


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

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

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