Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Подсчет количества букв в файле 
V
    Опции темы
CatGav
Дата 18.11.2012, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 30.10.2012

Репутация: нет
Всего: нет



Всем доброго времени суток. Дан текстовый файл в нем необходимо подсчитать количество букв а (латинская), подсчитывает. В другой файл записать результыты в виде: номер строки и количество букв в ней 
1 Как организовать подсчет букв в каждой строке ?


Код


#include "stdafx.h"
#include <iostream>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <fstream>
using namespace std; 

void main()
{
    char tempchar, inputfilename[101],outputfilename[101];
    char temp;
    int NumberOfLines=1, NumberStr=1, all_a=0, a_str=0;// номер стоки, всего сторк, всего_а,  букв_а_в_строке 
    setlocale(LC_ALL, "russian");
    
    
    ifstream inputfile;
    ofstream outputfile;
    strcpy(inputfilename,"D:\\zzz.txt");
    inputfile.open(inputfilename);
    if (inputfile.fail())
    {
        cout << "Ошибка открытия файла" << endl;
        _getch();        
        exit(1);
    }
ofstream out_stream; 
out_stream.open("D:\\qqq.txt");
      
    cout << " номер строки = "  << NumberOfLines << endl;
    out_stream  << " Номер стоки = " << NumberOfLines <<endl;

    while (!inputfile.eof())
   {
            inputfile.get(temp);
            if (temp=='\n')
       {
     NumberOfLines++;
        NumberStr++;
        cout << " номер строки = " << NumberOfLines << endl;
        out_stream  << " Номер стоки = " << NumberOfLines <<endl;
            
       }
            
            if (temp=='a')  // подсчет букв а 
            {
                all_a++;
                a_str++;
                                                          cout << " Букв а в строке  " << a_str <<endl;
                  out_stream << " Букв а в строке " << a_str <<endl;
                      }
             
    }
              cout << "Всего строк = " << NumberStr << endl;
    out_stream  << "Всего строк = " << NumberStr <<endl;
    cout << "Всего букв а = " << all_a << endl;
    out_stream  <<"Всего букв а = " << all_a <<endl;
    out_stream.close();
    inputfile.close();
   _getch();
}



PM MAIL   Вверх
CatGav
Дата 19.11.2012, 23:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 30.10.2012

Репутация: нет
Всего: нет



 Периписал эту часть кода 

Код

if (temp=='a')  // подсчет букв а 
            {
                all_a++;
                a_str++;
                    cout << " Букв а в строке  " << a_str <<endl;
                  out_stream << " Букв а в строке " << a_str <<endl;
                      }


На такой вид

Код

  if (temp=='a')  // подсчет букв а 
 {        
      int a_str=0; // отвечае за количество букв а в строке
      all_a++;
      a_str++;
            
          int k=0;
    k+=a_str;
    cout <<" букв а в строке "<<k<<endl;
         if (k=1)
    {
         int q=0;
        q++;
//     cout << "количество а в строке " << q <<endl;
     }
             
}


Есть ли смысл того что я написал, или иду неправильном направлении?

PM MAIL   Вверх
feodorv
Дата 20.11.2012, 03:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 12
Всего: 45



Цитата(CatGav @  20.11.2012,  00:07 Найти цитируемый пост)
или иду неправильном направлении?

В неправильном((( Просто в каком-то лунном(((

Обнуляйте a_str в момент, когда if (temp=='\n') (предварительно выдав это значение на экран и в файл):
Код

       if (temp=='\n')
       {
          NumberOfLines++;
          NumberStr++;

          cout << " номер строки = " << NumberOfLines << endl;
          out_stream  << " Номер стоки = " << NumberOfLines <<endl;

          cout << " Букв а в строке  " << a_str <<endl;
          out_stream << " Букв а в строке " << a_str <<endl;
          a_str = 0;
       }

а вот выдачу числа букв в строке при if (temp=='a') делать не нужно (это лишь промежуточные результаты - строка ещё не закончилась).

ЗЫ Если последняя строка в файле не заканчивается на '\n', то по ней не будут выданы отдельные данные по числу букв a
ЗЗЫ Чем отличаются NumberOfLines от NumberStr?


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
CatGav
Дата 20.11.2012, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 30.10.2012

Репутация: нет
Всего: нет



NumberOfLines  это номер строки   NumberStr количество строк
PM MAIL   Вверх
baldina
Дата 20.11.2012, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 15
Всего: 101



CatGav, чтение построчное, на каждой итерации цикла номер строки равен числу прочитанных строк. по окончании цикла они равны общему числу строк. то есть это одно и то же.
Код

int n=0;
while (!end_of_file) {
 read_string();
 cout << "обрабатывается строка номер "  << ++n << endl;
}
cout << "всего "  << n << " строк";


Добавлено через 4 минуты и 18 секунд
у вас кстати неправильное значение: в пустом файле строк нет, их число 0, а у вас
Цитата(CatGav @  18.11.2012,  16:54 Найти цитируемый пост)
int NumberOfLines=1



Это сообщение отредактировал(а) baldina - 20.11.2012, 16:14
PM MAIL   Вверх
CatGav
Дата 20.11.2012, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 30.10.2012

Репутация: нет
Всего: нет



Цитата(baldina @  20.11.2012,  16:12 Найти цитируемый пост)
у вас кстати неправильное значение: в пустом файле строк нет, их число 0, а у вас

А вот это да мой крупный косяк, но он уже давно исправлен =)

Это сообщение отредактировал(а) CatGav - 20.11.2012, 16:43
PM MAIL   Вверх
averil
Дата 20.11.2012, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 20.11.2012

Репутация: нет
Всего: нет



сейчас сам занимаюсь базовыми логаритмами
PM MAIL WWW   Вверх
baldina
Дата 21.11.2012, 10:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 15
Всего: 101



CatGav, что у вас в итоге получилось?
PM MAIL   Вверх
CatGav
Дата 25.11.2012, 13:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 30.10.2012

Репутация: нет
Всего: нет



Все получилось в лутшем виде =)

Код

#include "stdafx.h"
#include <iostream>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <fstream>
using namespace std; 

void main()
{
    char tempchar, inputfilename[101],outputfilename[101];
    char temp;
    int NumberOfLines=0, all_a=0, a_str;
    setlocale(LC_ALL, "russian");
    
    
    ifstream inputfile;
    ofstream outputfile;
    strcpy(inputfilename,"D:\\zzz.txt");
    inputfile.open(inputfilename);
    if (inputfile.fail())
    {
        cout << "Ошибка открытия файла" << endl;
        _getch();        
        exit(1);
    }
ofstream out_stream; 
out_stream.open("D:\\qqq.txt");
      
  
    while (!inputfile.eof())
{   
            inputfile.get(temp);
            if (temp =='\n')
      { 
     NumberOfLines++;
        cout << " номер строки = " << NumberOfLines << endl;
        out_stream  << " Номер стоки = " << NumberOfLines<<endl;
        cout << " Букв а в строке  " << a_str <<endl;
        out_stream << " Букв а в строке " << a_str <<endl;
        a_str = 0;
       }
    if (temp == 'a')  
        {    
        all_a++;
        a_str++;    
            }
}    
    cout << "Всего строк = " << NumberOfLines << endl;
    out_stream  << "Всего строк = " << NumberOfLines <<endl;
    cout << "Всего букв а = " << all_a << endl;
    out_stream  <<"Всего букв а = " << all_a <<endl;
    out_stream.close();
    inputfile.close();
   _getch();
}




PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0512 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.