Перевести из C++ в чисто Си - C (СИ)
Формулировка задачи:
Дано 7 чисел, считает количество отрицательных и сумму положительных.
Тремя способами (for, while, do while).
Но здесь я точнее не знаю как sizeof заменить на си.
Возможно, применить это:
Но у меня как то не получается.
#include "stdafx.h"
#include "stdlib.h"
#include <math.h>
#include <stdio.h>
#include <io.h>
#include <conio.h>
#include <locale.h>
int array[7];
void main()
{
int i, sum, count;
setlocale(LC_ALL, "RUS");
system("cls");
printf(" Написать 7 чисел и программа тремя способами считает количество отрицательных и сумму положительных. \n \n Введите 7 чисел массива: ");
for (i = 0; i < sizeof(array) / sizeof(int); i++)
scanf("%d", &array[i]);
printf("\n Вывод массива:");
for (i = 0; i < sizeof(array) / sizeof(int); i++)
printf("%5d", array[i]);
sum = 0; count = 0;
for (i = 0; i < sizeof(array) / sizeof(int); i++)
{
if (array[i] > 0) sum += array[i];
else count++;
}
printf("\n\n Цикл For \n");
printf(" Сумма положительных: %d \n", sum);
printf(" Число отрицательных: %d \n", count);
i = 0; sum = 0; count = 0;
while (i < sizeof(array) / sizeof(int))
{
if (array[i] > 0) sum += array[i];
else count++;
i++;
}
printf("\n Цикл While \n");
printf(" Сумма положительных: %d \n", sum);
printf(" Число отрицательных: %d \n", count);
i = 0; sum = 0; count = 0;
do
{
if (array[i] > 0) sum += array[i];
else count++;
i++;
} while (i < sizeof(array) / sizeof(int));
printf("\n Цикл Do While \n");
printf(" Сумма положительных: %d \n", sum);
printf(" Число отрицательных: %d \n", count);
_getch();
}int x, sum, k;
.
.
.
sum=0;
k=0;
for (i = 0; i <7; i++)
{
scanf_s("%d \n", &x);
if(x>0) sum=sum+x;
else k++;
}
printf(" Сумма положительных: %d \n", sum);
printf(" Число отрицательных: %d \n", k);Решение задачи: «Перевести из C++ в чисто Си»
textual
Листинг программы
#include "stdafx.h"
#include "stdlib.h"
#include <math.h>
#include <stdio.h>
#include <io.h>
#include <conio.h>
#include <locale.h>
#define C 7 /* <-------- 1 */
int array[C]; /* <-------- 2 */
void main()
{
int i, sum, count;
setlocale(LC_ALL, "RUS");
system("cls");
printf(" Написать 7 чисел и программа тремя способами считает количество отрицательных и сумму положительных. \n \n Введите 7 чисел массива: ");
for (i = 0; i < C; i++) /* <-------- 3 */
scanf("%d", &array[i]);
printf("\n Вывод массива:");
for (i = 0; i < C; i++) /* <-------- 4 */
printf("%5d", array[i]);
sum = 0; count = 0;
for (i = 0; i < C; i++) /* <-------- 5 */
{
if (array[i] > 0) sum += array[i];
else count++;
}
printf("\n\n Цикл For \n");
printf(" Сумма положительных: %d \n", sum);
printf(" Число отрицательных: %d \n", count);
i = 0; sum = 0; count = 0;
while (i < C) /* <-------- 6 */
{
if (array[i] > 0) sum += array[i];
else count++;
i++;
}
printf("\n Цикл While \n");
printf(" Сумма положительных: %d \n", sum);
printf(" Число отрицательных: %d \n", count);
i = 0; sum = 0; count = 0;
do
{
if (array[i] > 0) sum += array[i];
else count++;
i++;
} while (i < C); /* <-------- 7 */
printf("\n Цикл Do While \n");
printf(" Сумма положительных: %d \n", sum);
printf(" Число отрицательных: %d \n", count);
_getch();
}
Объяснение кода листинга программы
- Предполагается, что задача заключается в переводе кода из C++ в C.
- Объявлен массив array типа int размером C.
- В цикле for происходит ввод чисел в массив array с помощью функции scanf.
- В цикле for происходит вывод элементов массива array с помощью функции printf.
- В цикле for происходит подсчет суммы положительных чисел и количества отрицательных чисел в массиве array.
- В цикле while происходит подсчет суммы положительных чисел и количества отрицательных чисел в массиве array.
- В цикле do...while происходит подсчет суммы положительных чисел и количества отрицательных чисел в массиве array.