Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Lev
0 / 0 / 0
Регистрация: 15.12.2015
Сообщений: 28
#1

Удаление из строк всего,кроме букв латинского алфавита - C++

24.03.2016, 21:20. Просмотров 246. Ответов 4
Метки нет (Все метки)

Необходимо удалить из строк всё,кроме букв латинского алфавита и вывести указатели символов *,&.Почему-то вылезает ошибка на неожиданном месте,28 строке.Что я неправильно сделал?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include "stdafx.h"
#include <time.h>
#include <iostream>
#include <string>
#include <conio.h>
#include <stdio.h>
using namespace std;
 
void main()
{
char **a;
int n;
puts("Input n");
scanf("%d",&n);
a=new char *[n];
for (int i=0;i<n;i++)
*(a+i)=new char[80];
cout << "Input str \t" << n << endl;
for (int i=0;i<n;i++)
{
    fflush(stdin);
        gets(*(a+i));
}
for (int j=0;j<n;j++)
{
for (int i=0;i<strlen(*(a+j));i++)
{
    int k=(int)*(*(a+i)+j);
        if (!((k>=65 && k<=90) || (k>=97 && k<=122)))
        {
            int s=i;
                for (s;(s+1)<strlen(*(a+j));s++)
                *(*(a+s)+j)=*(*(a+s+1)+j);
        }
    if (k==(38 || 42))
            printf("%p",*(a+i)+j);
}
 
}
for (int j=0;j<n;j++)
        cout << *(a+j) << endl;     
getch();
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.03.2016, 21:20
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Удаление из строк всего,кроме букв латинского алфавита (C++):

В строке слов из букв латинского алфавита найти слова, в которых нет букв, которые повторяются. - C++
В строке слов из букв латинского алфавита найти слова, в которых нет букв, которые повторяются.

Перебор всех слов латинского алфавита длиной 1-4 букв - C++
Задали такую программу, а как ее писать - даже не знаю) Конечно представляю, что 1 пункт массив, а вот дальше... &quot;1)Перебор всех...

Расшифровка строки (циклическим сдвигом букв латинского алфавита на n символов) - C++
Дано зашифрованный строку символов, состоящий из букв латинского алфавита. Создать функцию, которая возвращает расшифрован строку символов...

Определить длину содержащейся в тексте максимальной серии символов, отличных от букв латинского алфавита - C++
1.Текст – это непустая последовательность букв. Дан текст. Определить длину содержащейся в тексте максимальной серии символов, отличных от...

Создать массив 20х10, состоящий из слов длинной 2—7 символов (из рандомных букв латинского алфавита) - C++
Здравствуйте. Необходимо создать массив 20х10, который состоит из слов длинной 2—7 символов (рандомное значение) и каждое слово состоит из...

Дано целое число N (1 < N < 26). Вывести N первых прописных (то есть заглавных) букв латинского алфавита - C++
Дано целое число N (1 &lt; =N &lt;=26). Вывести N первых прописных (то есть заглавных) букв латинского алфавита(только без cin и cout )

4
meJevin
156 / 148 / 58
Регистрация: 18.11.2015
Сообщений: 672
Завершенные тесты: 1
24.03.2016, 22:04 #2
Я не понял условие немножко, но вот прога, которая удаляет все, кроме латинских букв, из текста с несколькими строчками:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int main() {
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    std::cout << "Вводите строки, а чтобы закончить ввод введите в конце '~'\n";
 
    std::string text;
    std::getline(std::cin, text, '~');
 
    char symbols[] = "1234567890~!@#$%^&*()_+=-`]'[;/.,<:>?\"|}{";
 
    for (int i = 0; i < strlen(symbols); i++)
        text.erase(std::remove(text.begin(), text.end(), symbols[i]), text.end());
 
    std::cout << "Ваш текст, но только с латинскими буквами: ";
    std::cout << text;
 
    _getch();
}
Добавлено через 4 минуты
Объясни тупому девятикласснику, пожалуйста, что значит: "вывести указатели символов *,&". А я тебе все сделаю.
1
Lev
0 / 0 / 0
Регистрация: 15.12.2015
Сообщений: 28
24.03.2016, 22:39  [ТС] #3
Твоя программа не удаляет все,кроме букв лат.алф.,посмотри ASCII.Вывод указателя- спецификатор printf %p.Также хотелось бы не с нуля программу,а найти свои ошибки и разобраться.
0
meJevin
156 / 148 / 58
Регистрация: 18.11.2015
Сообщений: 672
Завершенные тесты: 1
24.03.2016, 22:55 #4
Цитата Сообщение от Lev Посмотреть сообщение
не удаляет все,кроме букв лат.алф.
да ладно, из этого списка я, вроде, все символы впихнул в массив чаров, а тебе еще это надо?

Добавлено через 1 минуту
Цитата Сообщение от Lev Посмотреть сообщение
,а найти свои ошибки и разобраться.
а это - хорошая идея, щас посмотрим.
0
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6503 / 3142 / 307
Регистрация: 04.12.2011
Сообщений: 8,669
Записей в блоге: 5
25.03.2016, 00:41 #5
Вот большая прогаммища
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#include <iostream>
#include <windows.h>
using namespace std; 
 
int extract_lat(const char *str, char ** rs=0, int lat_num=0)
{
int lat_number=0;
if(!lat_num)
{
while(*str)
{
if((*str>='a' && *str<='z') || (*str>='A' && *str<='Z'))
{
lat_number++;
}
str++;
}
}
else
{
char *res=*rs=new char[lat_num+1];
while(*str)
{
if((*str>='a' && *str<='z') || (*str>='A' && *str<='Z'))
{
*res=*str;
res++;
} 
str++;
}
*(res)='\0';
lat_number=lat_num;
}
return lat_number;
}
 
 
int main(int argc, char* argv[])
{
SetConsoleCP (1251); SetConsoleOutputCP (1251);
const char* str= "Papa u Vasi silen v informatice, учится Vasya u Papi весь год molodec ";
cout<<"Исходная строка: "<<str<<endl;
int lat_number=0;
char * result=0;
lat_number=extract_lat(str);
if(lat_number)
{
extract_lat(str, &result, lat_number);
cout << "Получили латинскую строку: " << result;
}
else
cout<<"Нет латниских букв";
cout<<endl;
cin.ignore(cin.rdbuf()->in_avail());
cin.clear();
cin.get();
return 0;    
}
добавьте что захотите.

Добавлено через 23 минуты
Вообще, если учесть, что буржуи ничего кроме английских букв буквами не считают, то можно проще:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
int extract_lat(const char *str, char ** rs=0, int lat_num=0)
{
int lat_number=0;
if(!lat_num)
{
while(*str)
{
if(isalpha(*str))
{
lat_number++;
}
str++;
}
}
else
{
char *res=*rs=new char[lat_num+1];
while(*str)
{
if(isalpha(*str))
{
*res=*str;
res++;
} 
str++;
}
*(res)='\0';
lat_number=lat_num;
}
return lat_number;
}
0
25.03.2016, 00:41
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.03.2016, 00:41
Привет! Вот еще темы с ответами:

Преобразовать строку заменой букв латинского алфавита со смешением h=4, каждую последнюю букву слова оставить - C++
Преобразовать строку заменой букв латинского алфавита со смешением h=4, каждую последнюю букву слова оставить неизменной.

Предложение содержит буквы латинского и русского алфавитов. Вывести буквы только латинского алфавита - C++
Предложение содержит буквы латинского и русского алфавитов. Написать программу, которая выводит буквы только латинского алфавита в порядке...

Вывести буквы латинского алфавита - C++
Помогите составить код используя строки, чтобы при введения произвольного текста (цифры, русские буквы) выводило все буквы латинского...

Запросить у пользователя 5 строк и вывести на экран ту, в которой содержится меньше всего букв «а» - C++
Запросить у пользователя 5 строк и высвети на экран ту, в которой содержится меньше всего букв «а»


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru