Регистрация Главная Сообщество
Сообщения за день Справка Регистрация

Help

-

Вопросы и ответы, обсуждения

- Ваши вопросы по C/C++ только в данном разделе

Ответ
 
Опции темы
Старый 19.09.2013, 18:03   #1
 Разведчик
Аватар для Darth Vadеr
 
Darth Vadеr неизвестен в этих краяхDarth Vadеr неизвестен в этих краяхDarth Vadеr неизвестен в этих краяхDarth Vadеr неизвестен в этих краяхDarth Vadеr неизвестен в этих краяхDarth Vadеr неизвестен в этих краях
Регистрация: 19.05.2011
Сообщений: 12
Популярность: -522
Сказал(а) спасибо: 16
Поблагодарили 42 раз(а) в 32 сообщениях
Отправить сообщение для Darth Vadеr с помощью ICQ Отправить сообщение для Darth Vadеr с помощью Telegram Отправить сообщение для Darth Vadеr с помощью Yahoo Отправить сообщение для Darth Vadеr с помощью Skype™
 
По умолчанию Help

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


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

  Ответить с цитированием
Старый 20.09.2013, 09:01   #2
 Пехотинец
Аватар для twice
 
twice на правильном путиtwice на правильном пути
Регистрация: 07.07.2012
Сообщений: 60
Популярность: 171
Сказал(а) спасибо: 3
Поблагодарили 11 раз(а) в 10 сообщениях
 
По умолчанию Re: Help

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

Код:
#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;
}

Последний раз редактировалось twice; 20.09.2013 в 13:12.
  Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 18:42.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net