PDA

Просмотр полной версии : Help


Darth Vadеr
19.09.2013, 18:03
Нужна помощь в написании программы(для контрольной в институте).
Язык C (без префиксов).
Вот задание:

Предполагается,что в файле записана последовательность чисел неизвестной длины(возможно пустая).Требуется за один просмотр файла без запоминания последовательности в массиве вычислить число положительных,отрицательных и нулевых чисел в последовательности.

twice
20.09.2013, 09:01
Писал в блокноте, нет времени отлаживать. Но идею я надеюсь ты уловил. Разделители между числами - пробел, перенос строки, возврат каретки.

#include <stdio.h>

int main(int argc, char** argv)
{
FILE fin = fopen("input.txt", "r");
char ch = 0;
long long num = 0;
long long counter = 0;
unsigned int positive = 0, negative = 0, zeros = 0;

if (!fin)
return -1; //Failed to open file

while(!feof(fin))
{
ch = fgetc(fin);

if ((ch == ' ') || (ch == '\n') || (ch == '\r') || ((ch - '0' < 0) && (ch != '-')))
{
if (counter)
{
if (num > 0)
positive++;
else if (num < 0)
negative++;
else
zeros++;
}
}
else
{
counter++;
if (ch == '-')
num = -num;
else
num = num*10 + ch-'0';
}


}

printf("\nPositive numbers: %u \nNegative numbers: %u \nZeros: %u",positive,negative,zeros);

return 0;
}