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

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

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

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

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

Спасибо!
 Комментарий модератора 
Здесь не раздел фриланса
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
23.11.2011, 19:55     С помощью string прочитать строку #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  [ТС]     С помощью string прочитать строку #3
В более новичковом уровне + Слова нужно вводить самому то есть после компиляции
Через cin.getline
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,131
23.11.2011, 20:09     С помощью string прочитать строку #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  [ТС]     С помощью string прочитать строку #5
Для меня который всего месяц изучает c++ это решение является не понятной
так как многое тут я не проходил еще.....
for_each, map и тд......

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

Используя только их возможно решить эту задачу?
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,131
23.11.2011, 20:26     С помощью string прочитать строку #6
Можно.
kazseo
0 / 0 / 0
Регистрация: 25.10.2011
Сообщений: 13
23.11.2011, 20:27  [ТС]     С помощью string прочитать строку #7
Вот через них бы решить так как я еще новичек до вашего уровня ой как далекооо....
vortexx1
 Аватар для vortexx1
6 / 6 / 2
Регистрация: 06.03.2011
Сообщений: 269
23.11.2011, 20:52     С помощью string прочитать строку #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  [ТС]     С помощью string прочитать строку #9
нет вы их просто пронумеровали
нужно количество .....
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
23.11.2011, 21:05     С помощью string прочитать строку #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 :.
Мега Таракан
 Аватар для .: TAPAKAH :.
110 / 11 / 1
Регистрация: 24.05.2010
Сообщений: 227
23.11.2011, 21:09     С помощью string прочитать строку #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++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
23.11.2011, 21:14     С помощью string прочитать строку #12
Цитата Сообщение от Kaka' Посмотреть сообщение
C
1
2
3
4
  char * str;
  scanf("%d", &str);
 ...
   strlen(str)

Не по теме:

вы юморист))



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

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

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

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

Не по теме:

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



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

Не по теме:

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

Не по теме:

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



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

Не по теме:

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

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

Добавлено через 1 минуту
Цитата Сообщение от Kaka' Посмотреть сообщение
и использовать при этом гораздо больше оперативной памяти
Ну если вы считаете, что ваш массив меньше памяти занимает, чем динамическая строка, я с вами спорить не буду Считайте как хотите
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
23.11.2011, 21:30     С помощью string прочитать строку #16
Kaka', прежде чем записывать строку куда-то, надо выделить для нее память, то есть либо в статический массив, либо динамический:
char s[1024];
fgets(s, 1024, stdin);

Добавлено через 1 минуту
Цитата Сообщение от Kaka' Посмотреть сообщение
Ну если вы считаете, что ваш массив меньше памяти занимает, чем динамическая строка, я с вами спорить не буду Считайте как хотите
Причем тут это. У вас даже динамического массива нет, куда вы строку записываете?
.: TAPAKAH :.
Мега Таракан
 Аватар для .: TAPAKAH :.
110 / 11 / 1
Регистрация: 24.05.2010
Сообщений: 227
23.11.2011, 21:33     С помощью string прочитать строку #17
т.е. я 6 строку заменяю так
C
1
char str[1024];
и все работает?

Добавлено через 2 минуты
Цитата Сообщение от Thinker Посмотреть сообщение
Причем тут это. У вас даже динамического массива нет, куда вы строку записываете?
Я имел ввиду, что динамическое программирование меньше памяти требует, и тут на сложность алгоритма можно забить. Как понимаю каждый вызов функции тож на производительность не очень хорошо влияет?
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
23.11.2011, 21:35     С помощью string прочитать строку #18
Цитата Сообщение от Kaka' Посмотреть сообщение
т.е. я 6 строку заменяю так
C
1
char str[1024];
и все работает?
Нет. Функцию scanf тогда надо так прописать
scanf("%s", s), но лучше fgets(). И сам алгоритм подправить скорее всего нужно.

Добавлено через 1 минуту
Цитата Сообщение от Kaka' Посмотреть сообщение
Я имел ввиду, что динамическое программирование меньше памяти требует
Так никто не спорит, не всегда правда, далеко не всегда. Вы только динамический массив создайте, его же нет у вас, вы в указатель что-то писать пытаетесь.
.: TAPAKAH :.
Мега Таракан
 Аватар для .: TAPAKAH :.
110 / 11 / 1
Регистрация: 24.05.2010
Сообщений: 227
23.11.2011, 21:37     С помощью string прочитать строку #19
Лучше чем мне доказывать, какой я нуб, помогите мне с компилятором (ссылка в посте 11). Наверно тогда не буду такие нубские проги писать

Не по теме:

какой я нуб я сам знаю - совсем нуб

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.11.2011, 21:37     С помощью string прочитать строку
Еще ссылки по теме:

Прочитать весь string после знака || C++
прочитать 5-ю строку из файла C++
C++ Прочитать файл в бинарном режиме с записью результата в string

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

Или воспользуйтесь поиском по форуму:
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
23.11.2011, 21:37     С помощью string прочитать строку #20
Цитата Сообщение от Kaka' Посмотреть сообщение
Как понимаю каждый вызов функции тож на производительность не очень хорошо влияет?
Во первых, функция вызывается только один раз, а во вторых, в языке Си функции вызываются ОЧЕНЬ быстро.
Yandex
Объявления
23.11.2011, 21:37     С помощью string прочитать строку
Ответ Создать тему
Опции темы

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