Найти количество положительных значений в каждом массиве - 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();
Объяснение кода листинга программы
- В условии if(sca==scb) происходит сравнение двух переменных sca и scb.
- Если условие if выполняется, то выводится сообщение с количеством положительных значений в массиве.
- В сообщении используется функция printf_s для вывода чисел.
- Если условие if не выполняется, то выводится сообщение
Конец программы!с помощью функции puts. - В конце программы используется функция _getch для остановки программы.