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

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

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

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

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

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

Спасибо!
 Комментарий модератора 
Здесь не раздел фриланса
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.11.2011, 19:43
Ответы с готовыми решениями:

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

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

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

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

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

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

Не по теме:

вы юморист))



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

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

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

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

Не по теме:

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



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

Не по теме:

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

Не по теме:

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



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

Не по теме:

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

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

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

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

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

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

Не по теме:

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

0
Эксперт С++
 Аватар для Thinker
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
23.11.2011, 21:37
Цитата Сообщение от Kaka' Посмотреть сообщение
Как понимаю каждый вызов функции тож на производительность не очень хорошо влияет?
Во первых, функция вызывается только один раз, а во вторых, в языке Си функции вызываются ОЧЕНЬ быстро.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.11.2011, 21:37
Помогаю со студенческими работами здесь

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

Как разбить строку на слова и знаки с помощью цикла с использованием 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, то она дополняется справа символами CH. как это записать?

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru