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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.85
kazseo
0 / 0 / 0
Регистрация: 25.10.2011
Сообщений: 13
#1

С помощью string прочитать строку - C++

23.11.2011, 19:43. Просмотров 1769. Ответов 24
Метки нет (Все метки)

Нужно сделать так:
С помощью string прочитать строку

Пример:
Cyberforum
Output
C -1
R - 2
e - 1
.............

То есть число каждых букв.....

Спасибо!
 Комментарий модератора 
Здесь не раздел фриланса
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.11.2011, 19:43
Здравствуйте! Я подобрал для вас темы с ответами на вопрос С помощью string прочитать строку (C++):

Как scanf ом прочитать строку string? - C++
как scanf ом прочитать строку string?

Записать строку с пробелами в string, с помощью потока. - C++
Здравствуйте. Можно ли с помощью потока ввода записать строку с пробелами в тип string. Если да, то как.

Можно ли строку (типа string) отсортировать с помощью qsort? - C++
Как можно строку a (типа string) отсортировать с помощью qsort, или это не возможно? На это ... int compare (const void * a, const...

Где и почему используют ту или иную строку std::string, char[], System::String^ ? - C++
Где и почему используют ту или иную строку std::string, char, System::String^ ? Объясните пожалуйста где нужно использовать...

Прочитать весь string после знака || - C++
Как прочитать весь string после знака || ?

Подскажите как прочитать целочисленное значение из string. - C++
Помогите! Есть файл содержащий значения для некоторых целочисленных переменных в виде "имя = значение": vn1 = 11 vn2 = 131 vn3 = 74...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
23.11.2011, 19:55 #2
C++
1
2
3
4
5
std::string str = "Cyberforum";
std::map<char, int> map;
std::for_each(str.begin(), str.end(), [&map](const char c) {++map[c];});
std::for_each(map.begin(), map.end(), [](const std::pair<char, int>& pair) 
{ std::cout << pair.first << " " << pair.second << std::endl; });
kazseo
0 / 0 / 0
Регистрация: 25.10.2011
Сообщений: 13
23.11.2011, 19:57  [ТС] #3
В более новичковом уровне + Слова нужно вводить самому то есть после компиляции
Через cin.getline
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,133
23.11.2011, 20:09 #4
C++
1
2
3
4
5
6
std::string str;
std::getline(std::cin, str );
std::map<char, int> map;
std::for_each(str.begin(), str.end(), [&map](const char c) {++map[c];});
std::for_each(map.begin(), map.end(), [](const std::pair<char, int>& pair) 
{ std::cout << pair.first << " " << pair.second << std::endl; });
kazseo
0 / 0 / 0
Регистрация: 25.10.2011
Сообщений: 13
23.11.2011, 20:20  [ТС] #5
Для меня который всего месяц изучает c++ это решение является не понятной
так как многое тут я не проходил еще.....
for_each, map и тд......

То что проходил:
массивы
loops
функции
поинтеры
стринг
и все пока что...

Используя только их возможно решить эту задачу?
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,133
23.11.2011, 20:26 #6
Можно.
kazseo
0 / 0 / 0
Регистрация: 25.10.2011
Сообщений: 13
23.11.2011, 20:27  [ТС] #7
Вот через них бы решить так как я еще новичек до вашего уровня ой как далекооо....
vortexx1
6 / 6 / 2
Регистрация: 06.03.2011
Сообщений: 269
23.11.2011, 20:52 #8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;
 
int main()
{
    char str[ 256 ] = { 0 };
    cin.getline( str, 256 );
    
    int len = strlen( str );
       
    for( int k = 0; k < len; k++ )
        cout << str[ k ] << " - " << k + 1 << endl;
    
    system( "pause" );
    return 0;
}
?
kazseo
0 / 0 / 0
Регистрация: 25.10.2011
Сообщений: 13
23.11.2011, 20:54  [ТС] #9
нет вы их просто пронумеровали
нужно количество .....
Thinker
Эксперт C++
4225 / 2199 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
23.11.2011, 21:05 #10
Все банально:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include<stdio.h>
#include<conio.h>
 
void Count(char *s)
{
    int i, count[256] = {0};
    for(i = 0; s[i]; i++)
        count[s[i]]++;
    for(i = ' '; i < 256; i++)
        if (count[i])
            printf("%c %d\n", i, count[i]);
 
}
 
int main(int argc, char* argv[])
{
    char s[1024];
    fgets(s, 1024, stdin);
    Count(s);
    getch();
    return 0;
}
Если без string просто все сделать, то с ним и подавно.
.: TAPAKAH :.
Мега Таракан
110 / 11 / 1
Регистрация: 24.05.2010
Сообщений: 227
23.11.2011, 21:09 #11
Раз я тоже сделал, то выложу
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
#include <conio.h>
 
int main(int argc, char * argv[])
{
  char * str;
  int k = 0;
  scanf("%d", &str);
  for(int i = 0; i < strlen(str); i++)
  {
    printf("%d - ", str[i]);
    for(int j = 0; j < strlen(str); j++)
    {
      if(str[j] == str[i])
        k++;
    }
    printf("%d",k);
    k = 0;
  } 
  getch();
  return 0;
}
Только не знаю, правильно ли просто текст проги набросал, поэтому возможны синтаксические ошибки
Не могу компилятор настроить Если кто хочет мне помочь в этом, то я буду премного благодарен
Thinker
Эксперт C++
4225 / 2199 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
23.11.2011, 21:14 #12
Цитата Сообщение от Kaka' Посмотреть сообщение
C
1
2
3
4
  char * str;
  scanf("%d", &str);
 ...
   strlen(str)

Не по теме:

вы юморист))



Цитата Сообщение от Kaka' Посмотреть сообщение
Только не знаю, правильно ли
Во первых, со строкой не верная работа, а во вторых, сложность алгоритма O(N^2), когда можно сделать O(n)
.: TAPAKAH :.
Мега Таракан
110 / 11 / 1
Регистрация: 24.05.2010
Сообщений: 227
23.11.2011, 21:22 #13
Цитата Сообщение от Kaka' Посмотреть сообщение
Только не знаю, правильно ли просто текст проги набросал, поэтому возможны синтаксические ошибки
Ну у меня компилятора под рукой нет

Главное суть понять

А в вашем варианте совсем алгоритм не сложный особенно в функции

Добавлено через 3 минуты
Цитата Сообщение от Thinker Посмотреть сообщение
Во первых, со строкой не верная работа
А как правильно будет?

Не по теме:

Сами говорите, сложность алгоритма и т.п. А строки динамическими хотя бы сделали



Добавлено через 2 минуты
Цитата Сообщение от Thinker Посмотреть сообщение
сложность алгоритма O(N^2), когда можно сделать O(n)
и использовать при этом гораздо больше оперативной памяти
Thinker
Эксперт C++
4225 / 2199 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
23.11.2011, 21:25 #14
Цитата Сообщение от Kaka' Посмотреть сообщение

Не по теме:

Сами говорите, сложность алгоритма и т.п. А строки динамическими хотя бы сделали

Не по теме:

Не понял юмора вашего, зачем здесь динамические строки. Вы видимо, пытались динамическую строку создать, а в итоге в указатель что-то пытаетесь запихнуть, весело)



Цитата Сообщение от Kaka' Посмотреть сообщение
и использовать при этом гораздо больше оперативной памяти

Не по теме:

Чувствую зря разговор начал, считайте, что я ничего не говорил.

.: TAPAKAH :.
Мега Таракан
110 / 11 / 1
Регистрация: 24.05.2010
Сообщений: 227
23.11.2011, 21:28 #15
Над вами никто не смеется Просто чем смеятся над моими ошибками, сказали как их исправить можно. Ведь все мы здесь чему нибудь учимься
Цитата Сообщение от Kaka' Посмотреть сообщение
А как правильно будет?
На это можете ответить?

Добавлено через 1 минуту
Цитата Сообщение от Kaka' Посмотреть сообщение
и использовать при этом гораздо больше оперативной памяти
Ну если вы считаете, что ваш массив меньше памяти занимает, чем динамическая строка, я с вами спорить не буду Считайте как хотите
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.11.2011, 21:28
Привет! Вот еще темы с ответами:

Прочитать файл в бинарном режиме с записью результата в string - C++
Привет, как можно прочитать файл в бинарном режиме, но чтоб каждый байт в двоичной СС записывало в переменную типа string ?

Можно ли записывать объекты класса string в память, чтоб потом их прочитать? - C++
Создал класс, который содержит много объектов класса string, но что то не так как надо. В debug режиме удаётся прочитать и вывести, но...

Прочитать русские буквы в массив char с помощью cin - C++
Какую нужно добавить библиотеку, или еще что-то? просто setlocale(LC_ALL, &quot;Russian&quot;); не помогает.

Как правильно прочитать текстовый файл с помощью ReadFile? - C++
Как правильно прочитать текстовый файл с помощью ReadFile и сделать каждую новую строчку переменной?(нужно 4 строчки) Добавлено...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
23.11.2011, 21:28
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru