• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

  • Автор темы Vunderkind
  • Дата начала
V

Vunderkind

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

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

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

Ввод
2
a abracadabra
b babaluba

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

DarkKnight

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;

}
 
V

Vunderkind

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

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

2
a abracadabra
b babaluba

вывод

5 a в abracadabra
3 b в babaluba
 
H

hosm

У меня никак не получается сделать ввод букв,а остальное я могу сам сделать
Так вот у меня не получается вводить n количество букв т.е char -ов
гы =)

Добавлено: а Вы вообще что-то пробовали? и где?)
 
V

Vunderkind

гы =)

Добавлено: а Вы вообще что-то пробовали? и где?)

Да я уже сколько раз пробовал.Хотя у меня через массив получилось ,но эта прога выводить общее количество букв которые стоят первыми,вот код
#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;
}
 
D

DarkKnight

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];
}


}
 
V

Vunderkind

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')))))
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!