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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.01.2015, 19:42   #1
AndrewKarpaty
 
Регистрация: 19.01.2015
Сообщений: 6
По умолчанию Работа с файлами на Си

Было задание : Сформировать и вывести на экран текстовый файл в котором символы "+" заменяются словом "SUMA", символы "-" заменяются символом "MULT", символы "/" - заменяются символом "DIV". Подсчитать и вывести на экран количество символов "=" в каждой строке. Одно из заданий я выполнил. Тоесть - первую часть. Но как мне подсчитать в этом коде еще и количество "="...тут я зашел в тупик. Всякое пробовал - выводило 0. Помогите кто-то. Вот часть кода :

Код:
#include <stdio.h>
#include <string.h>
//_CRT_SECURE_NO_WARNINGS_
void fornum(FILE *d);
int main (void)
{
	FILE *fp, *fo;
	char str[10000];
	int c;

	if ((fp = fopen("Laba.txt", "r")) == NULL)
	{
		printf("pomulka pru vidkrutti Laba.txt");
		getchar();
		return 1;
	}

	if ((fo = fopen("Progakaroche.txt", "w")) == NULL)
	{
		printf("pomulka pru vidkrutti Progakaroche.txt");
		getchar();
		return 1;
	}

    fclose(fp);
	fp = fopen("Laba.txt", "r");


	while ((c = fgetc(fp)) != EOF)
	{
		if (c == '+')
		{
			fputc('SUMMA', fo);
			printf("SUMMA");
		}
		else if(c == '-')
        {
            fputc('MULT',fo);
            printf("MULT");
        }
        else if(c == '/')
                {
                    fputc('DIV',fo);
                        printf("DIV");
                }
        else
			putchar(c);
	}
    fclose(fp);
	fclose(fo);

	getchar();

	return 0;
}

Последний раз редактировалось AndrewKarpaty; 19.01.2015 в 19:46.
AndrewKarpaty вне форума Ответить с цитированием
Старый 19.01.2015, 20:55   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Всякое пробовал - выводило 0.
Неужели всякое? Аж не верится... Давай намекну:
Код:
int plu=0,mi=0,di=0;
while ((c = fgetc(fp)) != EOF)
	{
		if (c == '+')
		{ plu++;
			fputc('SUMMA', fo);
			printf("SUMMA");
		}
		else if(c == '-')
        { mi++;
            fputc('MULT',fo);
            printf("MULT");
        }
        else if(c == '/')
                { di++;
                    fputc('DIV',fo);
                        printf("DIV");
                }
        else
			putchar(c);
	}
printf("Плюсов\t%d минусов\t%d косых\t%d",plu,mi,di);
Уловил идею?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.01.2015, 21:28   #3
AndrewKarpaty
 
Регистрация: 19.01.2015
Сообщений: 6
По умолчанию

Да,идею уловлено). Но все равно 0. Может я и где-то туплю и то очень сильно,но все равно не могу найти причину.
AndrewKarpaty вне форума Ответить с цитированием
Старый 19.01.2015, 21:48   #4
AndrewKarpaty
 
Регистрация: 19.01.2015
Сообщений: 6
По умолчанию

Фрагмент простого кода я был написал еще раньше. Все работает без проблем. Но как мне его "впихнуть" в мой код первой части - вот в том проблема. В любом случае 0. В чем проблема?. Вот код для второй части :
Код:
#include <stdio.h>
 
int main() {
 
    const char symbol = '=';
    const char* filename = "Laba.txt";
 
    FILE* f;
 
    int count;
    char ch;
 
    f = fopen(filename, "r");
    count = 0;
 
    while ((ch = fgetc(f)) != EOF)
        if (ch == symbol)
            count++;
 
    printf("Нашлось %d символов '%c`\n", count, symbol);
 
    return 0;
}

Последний раз редактировалось AndrewKarpaty; 19.01.2015 в 21:54.
AndrewKarpaty вне форума Ответить с цитированием
Старый 20.01.2015, 08:16   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Мдя... Ниче ты не уловил...
Код:
int plu=0,mi=0,di=0,eq=0;
while ((c = fgetc(fp)) != EOF)
	{
		if (c == '+')
		{ plu++;
			fputc('SUMMA', fo);
			printf("SUMMA");
		}
		else if(c == '-')
        { mi++;
            fputc('MULT',fo);
            printf("MULT");
        }
        else if(c == '/')
                { di++;
                    fputc('DIV',fo);
                        printf("DIV");
                }
        else {
			putchar(c);
            if(c == '=') eq++;
        }
	}
printf("Плюсов\t%d минусов\t%d косых\t%d равенств\t%d",plu,mi,di,eq);
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с файлами: запись, добавление, чтение (найти ошибку в коде) / C для начинающих Надо создать программу для работы с файлами Konlor Общие вопросы C/C++ 2 18.05.2014 12:37
Работа с файлами ashtone9130 Visual C++ 5 04.04.2012 12:46
работа с файлами сергей1893 Паскаль, Turbo Pascal, PascalABC.NET 3 22.03.2012 01:22
работа с файлами. tinton Помощь студентам 8 25.11.2011 19:02
Работа с файлами DM_bite Помощь студентам 4 20.09.2008 16:52