Вычисление количество букв в строке

Тема в разделе "Общие вопросы по С и С++", создана пользователем Vunderkind, 26 окт 2010.

  1. Vunderkind

    Vunderkind Active Member

    Регистрация:
    26 окт 2010
    Сообщения:
    27
    Симпатии:
    0
    Описания задания
    Напишите программу, которая использует функцию для вычиление сколько раз, встречает буква в данной последовательности.
    Используйте последовательность С-стиля (без библиотеки последовательности).
    Длина последовательности букв не больше 20 символов.Условие: написать программу используя указатель.

    Ввод
    Первая линия содержит N (1 <=N <=100). Тогда N линии даны в следующем формате: "один char" пробел и массив char

    Вывод
    N линии в следующем формате:
    <количество букв> <сама буква> в <и само последовательность>

    Ввод
    2
    a abracadabra
    b babaluba

    вывод
    5 a в abracadabra
    3 b в babaluba
    У меня никак не получается сделать ввод букв,а остальное я могу сам сделать
     
  2. DarkKnight

    DarkKnight Well-Known Member
    C\C++ Team

    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
    Код (C++):
    #include <iostream>

    using namespace std;

    void main(void)
    {
    char a;
    char *b = new char[100];
    int counts = 0;

    scanf("%c %s",&a,b);

    char *temp = b;

    while (strlen(temp) != 0)
    {
    if (a == *temp) counts++;
    temp++;
    }

    cout<<counts<<" '"<<a<<"'"<<" in "<<b<<endl;

    delete[] b;

    }
     
  3. Vunderkind

    Vunderkind Active Member

    Регистрация:
    26 окт 2010
    Сообщения:
    27
    Симпатии:
    0
    DarkKnight125 спасибо ,но ты упустил самое главное о чем я хотел спросить.
    Давай снова опишу.
    Сперва на первую строку вводится число которая указывает сколько букв будут вводится.Потом на 2-ю строку вводится буква потом пробел потом последовательность букв,на следующий строку вводится 2-ая буква потом пробел потом последовательность букв и так далее

    Так вот у меня не получается вводить n количество букв т.е char -ов
    Ввод

    2
    a abracadabra
    b babaluba

    вывод

    5 a в abracadabra
    3 b в babaluba
     
  4. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    гы =)

    Добавлено: а Вы вообще что-то пробовали? и где?)
    http://computer.howstuffworks.com/c7.htm
     
  5. Vunderkind

    Vunderkind Active Member

    Регистрация:
    26 окт 2010
    Сообщения:
    27
    Симпатии:
    0
    Да я уже сколько раз пробовал.Хотя у меня через массив получилось ,но эта прога выводить общее количество букв которые стоят первыми,вот код
    #include <iostream>
    #include <string>

    using namespace std;

    int main()
    {
    int i, j;
    int k;
    int yaya=0;
    char m[1000];
    string n[1000];

    cin >> k;

    for (i=0; i<k; i++)
    {
    cin >> m >> n;
    }

    for (i=0; i<k; i++)
    {
    for (j=0; j<n.length(); j++)
    {
    if (m==n[j])
    {
    yaya++;
    }
    }
    }
    cout << yaya;
    return 0;
    }
     
  6. DarkKnight

    DarkKnight Well-Known Member
    C\C++ Team

    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
    Код (C++):
    #include <iostream>
    #include <conio.h>
    using namespace std;


    void main(void)
    {
    int StrCount; //Кол-во слов
    char a[100]; //Массив символов
    char *b[100]; //Массив строк
    int counts; //Это куда будем считать
    char buffer[1024]; //Буферная переменная что бы переполнения не было

    cin>>StrCount; //Введем количество последовательностей
    cin.ignore(); //Уберем симлов созврата коретки из буфера потока, можно исп. getchar();

    for (int i=0; i<StrCount; i++) //Введем все последовательности
    {
    scanf("%c %s",&a[i],buffer); //Считаем строку "символ" "последов."
    cin.ignore();
    b[i] = new char[21]; //Выделим память по ул. 20 символов в послед. макс
    strncpy(b[i],buffer,20); //Скопируем, как раз это место защищает от переполнения *но можно и писать сразу в b[i](опасно тока)

    }

    //Обойдем массив еще раз
    for (int i=0; i<StrCount;i++)
    {
    char *temp = b[i]; //Возьмем указатель на строку
    counts = 0; //Обнулим кол-во счетчика
    while (strlen(temp) != 0) //Пока длина строки не нулевая
    {
    if (a[i] == *temp) counts++; //Если символ равен первому символу строки увеличим счетчик
    temp++; //Инкремент. указатель, теи самым отбрасывая первый символ
    }

    cout<<counts<<" '"<<a[i]<<"'"<<" in "<<b[i]<<endl; //Вывод на экран
    delete[] b[i];
    }


    }
     
  7. Vunderkind

    Vunderkind Active Member

    Регистрация:
    26 окт 2010
    Сообщения:
    27
    Симпатии:
    0
    Вот в чем было проблема,я не знал как создавать n количество перемен. Большое спасибо 'DarkKnight125')))))
     
Загрузка...
Похожие Темы - Вычисление количество букв
  1. Tipo4ek
    Ответов:
    1
    Просмотров:
    1.052
  2. Extrem
    Ответов:
    4
    Просмотров:
    1.272
  3. ballack
    Ответов:
    0
    Просмотров:
    1.108
  4. Gelergo
    Ответов:
    1
    Просмотров:
    1.764
  5. VladSh
    Ответов:
    27
    Просмотров:
    8.766

Поделиться этой страницей