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

Vunderkind

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

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

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

Ввод
2
a abracadabra
b babaluba

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

DarkKnight

Well-known member
01.08.2010
653
0
#2
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;

}
 

Vunderkind

Active member
26.10.2010
27
0
#3
DarkKnight125 спасибо ,но ты упустил самое главное о чем я хотел спросить.
Давай снова опишу.
Сперва на первую строку вводится число которая указывает сколько букв будут вводится.Потом на 2-ю строку вводится буква потом пробел потом последовательность букв,на следующий строку вводится 2-ая буква потом пробел потом последовательность букв и так далее

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

2
a abracadabra
b babaluba

вывод

5 a в abracadabra
3 b в babaluba
 

hosm

* so what *
18.05.2009
2 442
6
#4
У меня никак не получается сделать ввод букв,а остальное я могу сам сделать
Так вот у меня не получается вводить n количество букв т.е char -ов
гы =)

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

Vunderkind

Active member
26.10.2010
27
0
#5
гы =)

Добавлено: а Вы вообще что-то пробовали? и где?)
http://computer.howstuffworks.com/c7.htm
Да я уже сколько раз пробовал.Хотя у меня через массив получилось ,но эта прога выводить общее количество букв которые стоят первыми,вот код
#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;
}
 

DarkKnight

Well-known member
01.08.2010
653
0
#6
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];
}


}
 

Vunderkind

Active member
26.10.2010
27
0
#7
C++:
	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](опасно тока)

}

}
Вот в чем было проблема,я не знал как создавать n количество перемен. Большое спасибо 'DarkKnight125')))))