Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.06.2016, 19:10   #1
zaira001002
Форумчанин
 
Аватар для zaira001002
 
Регистрация: 13.09.2012
Сообщений: 122
По умолчанию Количество отрицательных и положительных чисел (Си)

В файле test.txt написано: 0 -1 7 8. Консоль выводит результат: count positive = 0 count negative = 0. Насколько поняла, читает до условия , где идет проверка на содержание файла, затем процедура process завершается с результатом -1, потому и начальные значения количества сохраняются , т.е 0. Что не так?
Код:
#include <stdio.h>

int process(FILE* file, int* kol_pol, int* kol_otr)
{
	if (file == NULL) return -1;
	int a;
	while (fscanf(file, "%d", &a) != EOF)
	{
		(a >= 0) ? (*kol_pol)++ : (*kol_otr)++;
	}
	return 0;
}

int main(void)
{
	int kol_pol = 0;
	int kol_otr = 0;

	FILE *fin;

        // ввод из файла
	fin = fopen("C:\c\test.txt", "r");

	process(fin, &kol_pol, &kol_otr);
	printf("%s %d %s", "count positive = ", kol_pol, "\n");
	printf("%s %d", "count negative = ", kol_otr);
	getchar();
	return 0;
}
zaira001002 вне форума Ответить с цитированием
Старый 23.06.2016, 01:42   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Думаю, программе не хватает прав доступа. Кинул рядом с exe текстовый файл - всё посчиталось, не считая того, что ноль как положительное учёлся.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 23.06.2016, 15:14   #3
zaira001002
Форумчанин
 
Аватар для zaira001002
 
Регистрация: 13.09.2012
Сообщений: 122
По умолчанию

Вы ссылку указывали на адрес, где и сама программа? Я вот пыталась разобраться , и у меня в самом деле, если поставить условие
Код:
if (fin == NULL) printf("Error");
выдает "Error", хотя , файл существует и есть там... Раньше ссылалась на этот же файл, когда пыталась там печатать "Hell world", с другой программы, и все работало)
zaira001002 вне форума Ответить с цитированием
Старый 23.06.2016, 15:23   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Либо экранируйте слеши, либо используйте /
p51x вне форума Ответить с цитированием
Старый 23.06.2016, 15:42   #5
zaira001002
Форумчанин
 
Аватар для zaira001002
 
Регистрация: 13.09.2012
Сообщений: 122
По умолчанию

Если бы я понимала , что вы написали)) я понятий не имею, о чем вы сейчас написали... "слеши"?
zaira001002 вне форума Ответить с цитированием
Старый 23.06.2016, 15:57   #6
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Ты опять со своими файлами? Я же тебе показал пример (где есть всё), ну возьми его и помыкавшись-помыкавшись - реши свою задачу.



Последний раз редактировалось ura_111; 23.06.2016 в 16:01.
ura_111 вне форума Ответить с цитированием
Старый 23.06.2016, 16:00   #7
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

https://en.wikipedia.org/wiki/Backslash
http://en.cppreference.com/w/cpp/language/escape
https://en.wikipedia.org/wiki/Escape_sequences_in_C

ura_111, к чему здесь ваши тяжелые скрины? человек не знает/не понимает определенную тему в языке, а не просто хочет передрать у вас.
p51x вне форума Ответить с цитированием
Старый 23.06.2016, 16:23   #8
zaira001002
Форумчанин
 
Аватар для zaira001002
 
Регистрация: 13.09.2012
Сообщений: 122
По умолчанию

О, ура! Спасибо, ребят, у меня заработало... Действительно, дело было в "backslash"ax))) или как там их называют "слеши"))) Странно, что до этого) другая программа с выводом текста в файл, работала исправно) с одинарными слешами)
zaira001002 вне форума Ответить с цитированием
Старый 23.06.2016, 16:45   #9
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Я же написал - можно и одинарные, но тогда надо писать прямые /
p51x вне форума Ответить с цитированием
Старый 23.06.2016, 16:59   #10
zaira001002
Форумчанин
 
Аватар для zaira001002
 
Регистрация: 13.09.2012
Сообщений: 122
По умолчанию

Для того) чтобы понять) перепробовала все варианты ) они работают:
Код:
 
fin = fopen ( "C:\\d\\test.txt", "r" );
fin = fopen ( "C:/d/test.txt", "r" );
fin = fopen ( "C://d//test.txt", "r" );
а вот только этот случай не работает)))
Код:
fin = fopen ( "C:\d\test.txt", "r" );
Вы правы) варианты есть) на будущее) буду знать) если что-то не так) пробовать менять слеши)
zaira001002 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти количество положительных чисел среди четырёх целых чисел. Если количество положительных чисел больше количества отрицательны grooveone Паскаль, Turbo Pascal, PascalABC.NET 5 17.12.2013 10:07
СИ: Задан массив, состоящий из целых положительных и отрицательных чисел. Создать новый массив из положительных элементов старого Любимая Помощь студентам 0 28.05.2013 18:44
Вводится 10 чисел. Найти среднее арифметическое положительных чисел и произведение отрицательных. Руся93 Помощь студентам 14 02.10.2011 13:12
Задача от VBA. Одномерные массивы-подсчитать количество положительных и отрицательных чисел ДМИТРИЙ1234 Microsoft Office Excel 12 02.06.2011 23:22
Найти количество положительных, отрицательных и нулевых чисел!! Александр Маслов Помощь студентам 2 21.12.2010 00:32