Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.72/18: Рейтинг темы: голосов - 18, средняя оценка - 4.72
0 / 0 / 0
Регистрация: 25.10.2011
Сообщений: 13
1

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

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

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

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

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

Спасибо!
 Комментарий модератора 
Здесь не раздел фриланса
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.11.2011, 19:43
Ответы с готовыми решениями:

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

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

Можно ли строку (типа string) отсортировать с помощью qsort?
Как можно строку a (типа string) отсортировать с помощью qsort, или это не возможно? На это ......

Прочитать строку из ресурсов String Table
Добрый день, форумчане, настигла напасть - нерешаемая задача. Нужно прочитать строку из файла...

24
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
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; });
0
0 / 0 / 0
Регистрация: 25.10.2011
Сообщений: 13
23.11.2011, 19:57  [ТС] 3
В более новичковом уровне + Слова нужно вводить самому то есть после компиляции
Через cin.getline
0
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
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; });
0
0 / 0 / 0
Регистрация: 25.10.2011
Сообщений: 13
23.11.2011, 20:20  [ТС] 5
Для меня который всего месяц изучает c++ это решение является не понятной
так как многое тут я не проходил еще.....
for_each, map и тд......

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

Используя только их возможно решить эту задачу?
0
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
23.11.2011, 20:26 6
Можно.
0
0 / 0 / 0
Регистрация: 25.10.2011
Сообщений: 13
23.11.2011, 20:27  [ТС] 7
Вот через них бы решить так как я еще новичек до вашего уровня ой как далекооо....
0
6 / 6 / 3
Регистрация: 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;
}
?
0
0 / 0 / 0
Регистрация: 25.10.2011
Сообщений: 13
23.11.2011, 20:54  [ТС] 9
нет вы их просто пронумеровали
нужно количество .....
0
Эксперт С++
4267 / 2241 / 203
Регистрация: 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 просто все сделать, то с ним и подавно.
1
Мега Таракан
110 / 11 / 5
Регистрация: 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;
}
Только не знаю, правильно ли просто текст проги набросал, поэтому возможны синтаксические ошибки
Не могу компилятор настроить Если кто хочет мне помочь в этом, то я буду премного благодарен
0
Эксперт С++
4267 / 2241 / 203
Регистрация: 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)
1
Мега Таракан
110 / 11 / 5
Регистрация: 24.05.2010
Сообщений: 227
23.11.2011, 21:22 13
Цитата Сообщение от Kaka' Посмотреть сообщение
Только не знаю, правильно ли просто текст проги набросал, поэтому возможны синтаксические ошибки
Ну у меня компилятора под рукой нет

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

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

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

Не по теме:

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



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

Не по теме:

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

Не по теме:

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



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

Не по теме:

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

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

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

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

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

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

Не по теме:

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

0
Эксперт С++
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
23.11.2011, 21:37 20
Цитата Сообщение от Kaka' Посмотреть сообщение
Как понимаю каждый вызов функции тож на производительность не очень хорошо влияет?
Во первых, функция вызывается только один раз, а во вторых, в языке Си функции вызываются ОЧЕНЬ быстро.
0
23.11.2011, 21:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.11.2011, 21:37
Помогаю со студенческими работами здесь

Как разбить строку на слова и знаки с помощью цикла с использованием Left/Right(string, 1)
Как разбить строку на слова и знаки с помощью цикла с использованием Left/Right(string,1)?...

Прочитать содержимое List<Dictionary<string, string>>
Всем привет. Задача следующая: метод возвращает содержимое типа List&lt;Dictionary&lt;string, string&gt;&gt; и...

padright(c:string; ch: char; n:byte):string - функция выравнивает строку С по размеру N
функция выравнивает строку С по размеру N. если длина строкиС меньше N, то она дополняется справа...

Как совместить строку типа String, имеющуюся в коде и функцию, принимающую std::string ?
Доброго времен суток)) У меня такая проблема: есть строка типа String^ , а функция принимает...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru