Форум программистов, компьютерный форум CyberForum.ru

Посчитать количество подряд идущих символов в каждой строке - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.64
mx_sagat
0 / 0 / 0
Регистрация: 29.11.2012
Сообщений: 100
09.01.2014, 01:01     Посчитать количество подряд идущих символов в каждой строке #1
привет всем.
очень нужна помощь.
бо бьюсь об неё уже не один день.
дело в следующим:
есть файл в нём строки с числами
как посчитать количество подряд идущих символов в каждой строке?
и потом как строку с самой длинной последовательностью переписать в другой файл?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.01.2014, 01:01     Посчитать количество подряд идущих символов в каждой строке
Посмотрите здесь:

C++ Найти наибольшее количество подряд идущих цифр в строке
C++ В строке посчитать наибольшее количество идущих подряд пробелов
функцию, которая подсчитывает максимальное количество символов, идущих подряд в строке C++
Работа с функциями. Подсчитать наибольшее количество идущих подряд символов пробела C++
Для строк символов определить какой символ в каждой строке подряд наибольшее число раз C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
UriahHeep
 Аватар для UriahHeep
222 / 217 / 41
Регистрация: 24.09.2012
Сообщений: 509
Записей в блоге: 2
09.01.2014, 10:52     Посчитать количество подряд идущих символов в каждой строке #2
Цитата Сообщение от mx_sagat Посмотреть сообщение
количество подряд идущих символов в каждой строке
Количество подряд идущих ОДИНАКОВЫХ символов? В каком виде должен быть результат?
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
09.01.2014, 10:58     Посчитать количество подряд идущих символов в каждой строке #3
Как то так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <algorithm>
 
void printVector(std::string str)
{
  std::cout << str << " ";
}
 
bool findMaxWord(std::string str1, std::string str2)
{
  return str1.length() < str2.length(); 
}
 
int main()
{   
  std::ofstream out("data.txt");
  std::string str;
  std::cout << "Input offer : "; std::getline(std::cin, str);
  out << str;  out.close();
  
  std::ifstream in("data.txt");
  std::vector< std::string > vec;
  while(in >> str)
     vec.push_back(str);
  
  std::for_each(vec.begin(), vec.end(), printVector);
  std::vector< std::string >::iterator it = std::max_element(vec.begin(), vec.end(), findMaxWord);
  std::cout << "The longest word : " << *it << std::endl;
  
  out.open("newData.txt");
  out << *it;
  out.close();   
    
  system("PAUSE");
  return 0;
}
mx_sagat
0 / 0 / 0
Регистрация: 29.11.2012
Сообщений: 100
09.01.2014, 11:37  [ТС]     Посчитать количество подряд идущих символов в каждой строке #4
UriahHeep, должно получится так
12365
1234678
в первой строке будет 3 последовательных числа а во второй будет 4.
и вторую строку записать в новый файл.
mx_sagat
0 / 0 / 0
Регистрация: 29.11.2012
Сообщений: 100
15.01.2014, 03:14  [ТС]     Посчитать количество подряд идущих символов в каждой строке #5
не то
вот это мог бы объяснить?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <cstdio>
#include <conio.h>
        
#define STRLEN 128
#define SPCHARS " ,.\t\n"
 
int main(void){
        char str[STRLEN], *pWord, *pLongest;
        int len, longest;
        
        printf("String: ");
 
        
        if ( !fgets(str, sizeof(str), stdin) || *str == '\n' )
                exit(1);
 
        
        if ( ( pLongest = strtok(str, SPCHARS) ) == NULL )
                exit(1);
        longest = strlen(pLongest);
 
 
        
        while ( pWord = strtok(NULL, SPCHARS) ){
                if ( ( len = strlen(pWord) ) > longest ){
                        longest = len;
                        pLongest = pWord;
                }
        }
        printf("Longest word is \"%s\" lenght - %d characters\n", pLongest, longest);
         system("pause");
        
        
        return 0;
}
UriahHeep
 Аватар для UriahHeep
222 / 217 / 41
Регистрация: 24.09.2012
Сообщений: 509
Записей в блоге: 2
15.01.2014, 22:50     Посчитать количество подряд идущих символов в каждой строке #6
Находит самое длинное слово в строке.
Почитать, как работает функция strtok().

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <cstdio>
#include <conio.h>
        
#define STRLEN 128 // длина буфера, в который будет считываться строка из входного потока
#define SPCHARS " ,.\t\n" // набор разделителей для функции strtok()
 
int main(void){
        char str[STRLEN], *pWord, *pLongest;
        int len, longest;
        
        printf("String: ");
 
        
        if ( !fgets(str, sizeof(str), stdin) || *str == '\n' ) // считываем строку из входного потока
                exit(1); // если функция fgets() вернула ноль, то завершить программу
 
        
        if ( ( pLongest = strtok(str, SPCHARS) ) == NULL ) // если в строке str функция strtok() не находит лексем, то и нечего дальше делать
                exit(1);
        longest = strlen(pLongest);
 
 
        
        while ( pWord = strtok(NULL, SPCHARS) ){ // в цикле получаем от strtok() очередную лексему (слово) из строки
                if ( ( len = strlen(pWord) ) > longest ){ // если лексема длиннее предыдущей, то сохраняем длину и указатель на лексему
                        longest = len;
                        pLongest = pWord;
                }
        }
        printf("Longest word is \"%s\" lenght - %d characters\n", pLongest, longest);
         system("pause");
        
        
        return 0;
}
Yandex
Объявления
15.01.2014, 22:50     Посчитать количество подряд идущих символов в каждой строке
Ответ Создать тему
Опции темы

Текущее время: 09:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru