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

Вывести те слова, которые отличаются от последнего слова и удовлетворяют условию, что в слове нет повторяющихся букв - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Найти коэффициенты произведения многочленов http://www.cyberforum.ru/cpp-beginners/thread770875.html
Помогите пожалуйста решить эту задачу, используя массивы. Данные задачи в картинке. Буду очень благодарен!
C++ Класс линия Задание: описать класс линии, в котором конструктор ещё и рисует её. (это сделано). Доп. задание: сделать деструктор. вопрос: как? просто длину занулить или что? # include <iostream> using... http://www.cyberforum.ru/cpp-beginners/thread770873.html
Перевод из 16 сс в 4 сс C++
Помогите пожалуйста написать программу на C++ по переводу из 16 сс в 4 с дробными числами, а то я не очень понимаю как это сделать, недавно начал изучать этот язык. Добавлено через 1 час 16 минут...
Попадание в Морском Бою C++
#include <iostream> #include <ctime> #include <clocale> #include <stdlib.h> #include <conio.h> #include <locale.h> using namespace std; enum direction{h,v}; class Player {
C++ Нужно прочитать со входного потока число и строку, как проигнорировать лишние символы? http://www.cyberforum.ru/cpp-beginners/thread770820.html
Всем привет! Со входного потока нужно прочитать число, а затем в новой строке string... Гугл мне сказал, что после того, как мы ввели число, в буфере остаётся символ '\n'. Пишу: #include...
C++ Определение учетной записи, из-под которой был скопирован файл в сеть Добрый времени суток, коллеги! На сетевой диск сохраняется файл. В свойствах файла присутствует информация о разрешениях для групп пользователей, имеющих к нему доступ. Также в списке... подробнее

Показать сообщение отдельно
HyPuK
4 / 4 / 1
Регистрация: 24.01.2013
Сообщений: 76
31.01.2013, 17:46  [ТС]
yoghurt92, Большое спасибо, что не пожалели время и написали мне программу, но я не умею пока что работать с #include <iostream>, по этому не могу понять вам код.

Я сам сделал но работает не корректно
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include <stdlib.h>
void main()
{
 
char line[80]="Visual Studio is a suite of component based development tools!  suite !!!"; //Visual Studio представлет собой набор компонентов на основе инструментов разработки//
int r=0,j=0,l=0,i=0,k=0,L;
char wrd[20][80], length[80];        //массив для длин слов (array of word lengths)
 
/*printf("Enter a string \n"); gets(line);*/
 
printf("-----------------------------------------------\n");
printf("Basic line is: "); puts(line);
 
printf("-----------------------------------------------\n");
L=strlen(line);
printf("Number of all digits=%d\n",L);
 
//Оставляем только буквы в конце строки
while (L-->0)
    {
    if (isalpha(line[L]) ) break;
    }
 
 
//Разбиваем строку на слова (Splitting a string into words)
while(i<L)
{
    while (!isalnum(line[i])) i++;
    while (isalnum(line[i]))
    {
            wrd[j][k]=line[i];
            k++;
            i++;
    }
    wrd[j][k]='\0';
    length[j]=k;
    r=j; 
    k=0;
    j++;
}
 
 
// Оставляем те слова, которые отличаются от последнего слова (We reserve the words that are different from the last word)
for (j=0;j<r;j++)
    {
        if (strcmp(wrd[j],wrd[r])==0) 
            {   
            for (j;j<r;j++)
                {    
                strcpy(wrd[j],wrd[j+1]);
                /*length[j]=length[j+1];
                wrd[j]= wrd[j+1];*/ 
                }
            j=0;r--;
            }
    }
 
    //Проверяем слова на повторение букв в слове (Check words to repeat the letters in the word)
    for (int j=0;j<r;j++)
        {
        if (strcmp(wrd[j],wrd[r])!=0) 
            { 
            l=length[j]-1;                                       // длина слова (number of digits/word length)
            for (int k=0;k<l;k++)
                {
                    for (int n=1;n<=l;n++)
                    {
                    if ((wrd[j][k]==wrd[j][n]) & (n!=k))        
                        {
                            for (j;j<r;j++)
                            {  
                                length[j]=length[j+1];
                                l=length[j];
                                strcpy(wrd[j],wrd[j+1]); 
                                           /*for(int k=0;k<l;k++)
                                           {   wrd[j][k]= wrd[j+1][k];
                                           wrd[j][k+1]=0; }*/
                            }
                            j=0;r--;      
                       }
                    }
                }
            }
        }
 
printf("-----------------------------------------------\n");
 
printf("Sorting of words which don't coincide \nwith the last word and have no in the \nword of repeating letters:\n\n");
//Выход [Ответ] (output)
for (j=0; j<r; j++)
    {                                    
        puts(wrd[j]);           //printf("%s\n",wrd[j]);
    }
 
printf("-----------------------------------------------\n");
}
Ошибка вот здесь! :
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
for (int j=0;j<r;j++)
        {
        if (strcmp(wrd[j],wrd[r])!=0) 
            { 
            l=length[j]-1;                                       
            for (int k=0;k<l;k++)
                {
                    for (int n=1;n<=l;n++)
                    {
                    if ((wrd[j][k]==wrd[j][n]) & (n!=k))        
                        {
                            for (j;j<r;j++)
                            {  
                                length[j]=length[j+1];
                                l=length[j];
                                strcpy(wrd[j],wrd[j+1]); 
                                           /*for(int k=0;k<l;k++)
                                           {   wrd[j][k]= wrd[j+1][k];
                                           wrd[j][k+1]=0; }*/
                            }
                            j=0;r--;      
                       }
                    }
                }
            }
        }
Может кто-нибудь что-либо предложить?

Добавлено через 58 минут
Короче ребята я нашел решение!
Вот
Кликните здесь для просмотра всего текста
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include <stdlib.h>
void main()
{
 
char line[80]="Visual Studio is a suite %of component* based development tools!  Studio !!!"; //Visual Studio представлет собой набор компонентов на основе инструментов разработки//
int r=0,j=0,l=0,i=0,k=0,L;
char wrd[20][80], length[80];        //массив для длин слов (array of word lengths)
 
/*printf("Enter a string \n"); gets(line);*/
 
printf("-----------------------------------------------\n");
printf("Basic line is: "); puts(line);
 
printf("-----------------------------------------------\n");
L=strlen(line);
printf("Number of all digits=%d\n",L);
 
//Оставляем только буквы в конце строки
while (L-->0)
    {
    if (isalpha(line[L]) ) break;
    }
 
 
//Разбиваем строку на слова (Splitting a string into words)
while(i<L)
{
    while (!isalnum(line[i])) i++;
    while (isalnum(line[i]))
    {
            wrd[j][k]=line[i];
            k++;
            i++;
    }
    wrd[j][k]='\0';
    length[j]=k;
    r=j; 
    k=0;
    j++;
}
 
 
// Оставляем те слова, которые отличаются от последнего слова (We reserve the words that are different from the last word)
for (j=0;j<r;j++)
    {
        if (strcmp(wrd[j],wrd[r])==0) 
            {   
            for (j;j<r;j++)
                {    
                strcpy(wrd[j],wrd[j+1]);
                length[j]=length[j+1];
                /*wrd[j]= wrd[j+1];*/   
                }
            j=0;r--;
            }
    }
 
    //Проверяем слова на повторение букв в слове (Check words to repeat the letters in the word)
    for (int j=0;j<r;j++)
        {
        if (strcmp(wrd[j],wrd[r])!=0) 
            { 
            l=length[j]-1;                                       // длина слова (number of digits/word length)
            for (int k=0;k<l;k++)
                {
                    for (int n=1;n<=l;n++)
                    {
                    if ((wrd[j][k]==wrd[j][n]) & (n!=k))        
                        {
                            for (j;j<r;j++)
                            {  
                                length[j]=length[j+1];
                                l=length[j];
                                strcpy(wrd[j],wrd[j+1]); 
                                           /*for(int k=0;k<l;k++)
                                           {   wrd[j][k]= wrd[j+1][k];
                                           wrd[j][k+1]=0; }*/
                            }
                            j=0;r--;      
                       }
                    }
                }
            }
        }
 
printf("-----------------------------------------------\n");
 
printf("Sorting of words which don't coincide \nwith the last word and have no in the \nword of repeating letters:\n\n");
//Выход [Ответ] (output)
for (j=0; j<r; j++)
    {                                    
        puts(wrd[j]);           //printf("%s\n",wrd[j]);
    }
 
printf("-----------------------------------------------\n");
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru