0 / 0 / 0
Регистрация: 03.11.2012
Сообщений: 3
|
|
1
|
Поиск симметричных слов (Подправить код)
16.06.2013, 20:06. Показов 2234. Ответов 0
Прошу помогите! Не могу понять почему не выводит сообщение
Задание
Дана последовательность, содержащая от 1 до 30 слов. Слова разделены одним или несколькими пробелами. За последним словом – точка. Напечатать:
Все симметричные слова!
Вот код :
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
| #include "stdafx.h"
#include<iostream>
#include<conio.h>
#include<string.h>
#include<windows.h>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_ALL,"Rus");
char text[]="Abkhazia lolol Australia, statt Austria, torot Azerbaijan, nnnnn Aland Islands, Albania Algeria.";//предложение
char *razdelitel=" .,!?"; //разделители
char *slovo=0; //хранит слово
int strl;
int kol_vosimm_slov=0;
slovo=strtok(text,razdelitel);
while(slovo) //пока есть другие слова
{
strl=strlen(slovo);
int x=strl/2; //int отбрасывает дробную часть, следовательно 5/2 будет 5
int q=0;//если какая-либо из букв не равна букве с другой стороны, увеличиваем на 1
for (int i=0,j=strl-1;i<x;i++,j--){//strl -1 потому что slovo[strl] = '\0'
if (slovo[i]!=slovo[j]) q++;
}
if (q==0)
cout<<"Симметричное слово"<<endl;
}
getch();
return 0;
} |
|
Добавлено через 9 минут
о все переделал, может кому интересно будет
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
| #include "stdafx.h"
#include<iostream>
#include<conio.h>
#include<string.h>
#include<windows.h>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_ALL,"Rus");
char text[]="Abkhazia lolol Australia, statt Austria, torot Azerbaijan, nnnnn Aland Islands, Albania Algeria.";//предложение
char *razdelitel=" .,!?"; //разделители
char *slovo=0; //хранит слово
int strl;
int kol_vosimm_slov=0;
slovo=strtok(text,razdelitel);
while(slovo) //пока есть другие слова
{
strl=strlen(slovo);
int x=strl/2; //int отбрасывает дробную часть, следовательно 5/2 будет 5
int q=0;//если какая-либо из букв не равна букве с другой стороны, увеличиваем на 1
for (int i=0,j=strl-1;i<x;i++,j--){//strl -1 потому что slovo[strl] = '\0'
if (slovo[i]!=slovo[j]) q++;
}
if (q==0){
cout<<"slovo **"<<slovo<<"** simmetrichno"<<endl;
kol_vosimm_slov++;
}
slovo=strtok(NULL,razdelitel); //получаем след. слово
}
cout<<"В предложении "<<kol_vosimm_slov<<" симметричных слов(а)"<<endl;
getch();
return 0;
} |
|
0
|