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

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

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

Восстановить пароль

Купить рекламу на форуме - 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,430
По умолчанию

Думаю, программе не хватает прав доступа. Кинул рядом с 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,831
По умолчанию

Либо экранируйте слеши, либо используйте /
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,831
По умолчанию

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,831
По умолчанию

Я же написал - можно и одинарные, но тогда надо писать прямые /
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