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

Дан массив из строчных латинских букв. Вывести на экран в алфавитном порядке все буквы, которые входят в этот текст по одному разу - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 179, средняя оценка - 4.74
sashagamer
0 / 0 / 0
Регистрация: 29.03.2010
Сообщений: 12
29.03.2010, 20:17     Дан массив из строчных латинских букв. Вывести на экран в алфавитном порядке все буквы, которые входят в этот текст по одному разу #1
Дан массив из строчных латинских букв. Вывести на экран в алфавитном порядке все буквы, которые входят в этот текст по одному разу.
помогите плиз, ато не получается никак...
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.03.2010, 20:17     Дан массив из строчных латинских букв. Вывести на экран в алфавитном порядке все буквы, которые входят в этот текст по одному разу
Посмотрите здесь:

C++ Напечатать в алфавитном порядке все буквы, которые входят в текст по одному разу
C++ Вывести на экран в алфавитном порядке все символы которые входят в массив по одному разу
C++ Напечатать в алфавитном порядке буквы,входящие в заданный текст по одному разу
C++ Дан текст на русском языке. Напечатать в алфавитном порядке все согласные буквы,которые входят только в одно слово
C++ Обработка строк. Печать по одному разу в алфавитном порядке всех строчных гласных русских букв, входящих в текст
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
XuTPbIu_MuHTAu
Эксперт C++
 Аватар для XuTPbIu_MuHTAu
2217 / 732 / 10
Регистрация: 27.05.2008
Сообщений: 1,507
29.03.2010, 20:31     Дан массив из строчных латинских букв. Вывести на экран в алфавитном порядке все буквы, которые входят в этот текст по одному разу #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
#include <stdio.h>
 
const int alph_length = 26;
 
 
int main() {
    int i;
    char text[81];
    char *p;
 
    int letters_encountered[alph_length];
 
    for(i = 0;i< alph_length ; i++ ) 
         letters_encountered[i]=0;
 
    fgets(text,80,stdin);
 
    p = text;
 
    while(*p!=0) {
        if(*p< 'a' || *p > 'z') {
 
            p++;
            continue;
        };
 
        letters_encountered[*(p++) -'a']++;
    };
 
    for(i=0;i<alph_length;i++) { 
        if(letters_encountered[i]==1)
            printf("%c",'a'+(char)i);
 
    };
    return 0;
 
};
cobe_thichtudie
 Аватар для cobe_thichtudie
2 / 5 / 0
Регистрация: 23.11.2010
Сообщений: 35
25.11.2010, 05:35     Дан массив из строчных латинских букв. Вывести на экран в алфавитном порядке все буквы, которые входят в этот текст по одному разу #3
Цитата Сообщение от XuTPbIu_MuHTAu Посмотреть сообщение
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
#include <stdio.h>
 
const int alph_length = 26;
 
 
int main() {
    int i;
    char text[81];
    char *p;
 
    int letters_encountered[alph_length];
 
    for(i = 0;i< alph_length ; i++ ) 
         letters_encountered[i]=0;
 
    fgets(text,80,stdin);
 
    p = text;
 
    while(*p!=0) {
        if(*p< 'a' || *p > 'z') {
 
            p++;
            continue;
        };
 
        letters_encountered[*(p++) -'a']++;
    };
 
    for(i=0;i<alph_length;i++) { 
        if(letters_encountered[i]==1)
            printf("%c",'a'+(char)i);
 
    };
    return 0;
 
};
привет!
че та программа не работает!
надо по англ. или по русск.?
CryNet
0 / 0 / 1
Регистрация: 13.04.2011
Сообщений: 78
Записей в блоге: 1
14.04.2011, 10:46     Дан массив из строчных латинских букв. Вывести на экран в алфавитном порядке все буквы, которые входят в этот текст по одному разу #4
не работает программа.. выводится окно в котором непонятно что печать... по окнчанию печати окно просто закрывается и все(( в чем проблема??
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
14.04.2011, 13:03     Дан массив из строчных латинских букв. Вывести на экран в алфавитном порядке все буквы, которые входят в этот текст по одному разу #5
всё работает, вот ещё вариант
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include<stdio.h>
 
int Comp(const void* a, const void* b){
    return *(char*)a-*(char*)b;
}
 
int main(){
    char text[]="fghbnggnawqxw", *p=text;
    qsort(text, sizeof(text)-1, sizeof(*text), Comp);
    for(; *p; ++p){
        if(*p==*(p+1)){
            while(*p==*(p+1))++p;
        }
        else{
            printf("%c", *p);
        }
    }
    return 0;
}
CryNet
0 / 0 / 1
Регистрация: 13.04.2011
Сообщений: 78
Записей в блоге: 1
14.04.2011, 23:37     Дан массив из строчных латинских букв. Вывести на экран в алфавитном порядке все буквы, которые входят в этот текст по одному разу #6
компилятор на DevC++ выдает ошибку:
9 C:\Users\User\Documents\00000000.cpp `qsort' undeclared (first use this function)
(Each undeclared identifier is reported only once for each function it appears in.)

В чем проблема?

а как сделать чтобы получить целую строку в виде алфавита, если дана матрица 5 на 6.. матрица задана типа:
C++
1
2
3
4
5
char *matr[5]={{"abcemn"},
               {"fedkpo"},
               {"ghijqr"},
               {"xwvuts"},
               {"yzaaaa"}};
Добавлено через 5 минут
в чем проблема компиляции нашел.. не добавлен #include один.. а вот что сделать мне с той матрицей? ее как вывести в строку в алфавитном порядке?
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
15.04.2011, 00:20     Дан массив из строчных латинских букв. Вывести на экран в алфавитном порядке все буквы, которые входят в этот текст по одному разу #7
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
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
 
int Compare(const void* a, const void* b){
    return *(char*)a-*(char*)b;
}
 
int main(){
    char *matr[]={{"abcemn"},
                   {"fedkpo"},
                   {"ghijqr"},
                   {"xwvuts"},
                   {"yzaala"}}, res[100]={'\0'}, i, *a=res, *b=res;
    for(i=0; i<sizeof(matr)/sizeof(*matr); i++){
        strcat(res, matr[i]);
    }
    qsort(res, strlen(res), sizeof(*res), Compare);
    for(; *b=*a; ++a){
        if(*a!=*(a+1))++b;
    }
    puts(res);
    return 0;
}
CryNet
0 / 0 / 1
Регистрация: 13.04.2011
Сообщений: 78
Записей в блоге: 1
15.04.2011, 00:32     Дан массив из строчных латинских букв. Вывести на экран в алфавитном порядке все буквы, которые входят в этот текст по одному разу #8
5 ошибок такого типа:
14 C:\Users\User\Documents\777777.cpp brace-enclosed initializer used to initialize `char*'

Я так понимаю невозможно проинициализировать char.. в чем проблема? пользуюсь DevC++.. и еще, а если вывод строки сделать через printf %s или printf &c то как ?
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
15.04.2011, 00:45     Дан массив из строчных латинских букв. Вывести на экран в алфавитном порядке все буквы, которые входят в этот текст по одному разу #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
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
 
int Compare(const void* a, const void* b){
    return *(char*)a-*(char*)b;
}
 
int main(){
    char *matr[]={"abcemn",
                   "fedkpo",
                   "ghijqr",
                   "xwvuts",
                   "yzaala"}, res[100]={'\0'}, i, *a=res, *b=res;
    for(i=0; i<sizeof(matr)/sizeof(*matr); i++){
        strcat(res, matr[i]);
    }
    qsort(res, strlen(res), sizeof(*res), Compare);
    for(; *b=*a; ++a){
        if(*a!=*(a+1))++b;
    }
    printf("%s", res);
    return 0;
}
CryNet
0 / 0 / 1
Регистрация: 13.04.2011
Сообщений: 78
Записей в блоге: 1
15.04.2011, 00:51     Дан массив из строчных латинских букв. Вывести на экран в алфавитном порядке все буквы, которые входят в этот текст по одному разу #10
спасибо огромное)) примного благодарен))
gurux
0 / 0 / 0
Регистрация: 08.06.2011
Сообщений: 3
08.06.2011, 19:54     Дан массив из строчных латинских букв. Вывести на экран в алфавитном порядке все буквы, которые входят в этот текст по одному разу #11
XuTPbIu_MuHTAu, Помогите плиз составить программу «сжатия» исходной последовательности символов: каждая подпоследовательность, состоящая из нескольких идущих подряд символов x, заменяется на текст x(k). Где x – символ, k – число вхождений этого символа в исходную последовательность.
LVV
56 / 56 / 3
Регистрация: 15.02.2010
Сообщений: 239
24.11.2011, 20:36     Дан массив из строчных латинских букв. Вывести на экран в алфавитном порядке все буквы, которые входят в этот текст по одному разу #12
Ну, во-первых массив не "дан", а вводится с клаиатуры.
Во-вторых, если массив не динамический, то имеет границы,
которые мы установим до 80 символов, включая символ конца строки \0.
В-третьих, если сказано, что массив строчных латинских букв,
то нет смысла программно проверять действительно ли это
строчные латинские буквы.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
using namespace std;
 
int main() {
    
//80 сиволов в строке включая символ конца строки \0
//26 букв в алфавите
char t[80];
 int b[26]={0};
 
      cin >> t;
 
        
        for(int i=0; t[i]!='\0'; i++)
                ++b[int(t[i])-97];//97 это ASCII-код строчной латинской буквы "а"
        
        for(int i=0; i<26; i++)
                if (b[i]==1) cout << t[i];
            
 
 system ("pause");
        return 0;
 }
помоему так проще и понятнее, чем предложенные здесь варианты.
den228
Сообщений: n/a
04.12.2011, 23:39     Дан массив из строчных латинских букв. Вывести на экран в алфавитном порядке все буквы, которые входят в этот текст по одному разу #13
помогите пожалуйста.
нужна функция на С
Функция WordLength(s,n)
Назначение: определение длины слова с номером n в строке s.
Dima4u5
Сообщений: n/a
12.04.2012, 14:34     Дан массив из строчных латинских букв. Вывести на экран в алфавитном порядке все буквы, которые входят в этот текст по одному разу #14
Требуеться добавить
C
1
# include <stdlib.h>
ahodaro
Сообщений: n/a
18.04.2012, 15:00     Дан массив из строчных латинских букв. Вывести на экран в алфавитном порядке все буквы, которые входят в этот текст по одному разу #15
Только начал изучать с++, пока разбираюсь со строками по примерам из учебника.
Вот как решил эту задачу.
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
int main()
{
char cp[]="abcdfhtrsweasd aswjgash vkas uuu , asdadasefeasf"; // примерная строка
char temp;
string flag="";
string result="";
string str2(cp); //перенес из массива в строку, ибо эту тему разбираю
string::size_type pos = 0;
cout << str2 + "\n";
    while (pos != str2.size()){
    temp = str2[pos]; // работаю с одним символом
 
    if (flag.find(temp) == string::npos) { flag.push_back(temp);}else {pos++; continue; } 
//здесь выношу все проверенные буквы во вторую строку, если буква уже есть в строке то значит буква проверена, переходим к следущей 
 
 
string::size_type pos2 = str2.find_last_of(temp); //ищу с конца строки букву
    if ( pos == pos2 ) { //если нашел на том же месте значит буква одна, добавляю в список результата
    result.push_back(temp);
 
    }
//если нашел в другом месте букв больше ничего не делаю
    pos++;
    }
 
cout <<result;
 
return 0;
Отсортировку пока не умею
David Sylva
 Аватар для David Sylva
1280 / 942 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
12.07.2012, 11:04     Дан массив из строчных латинских букв. Вывести на экран в алфавитном порядке все буквы, которые входят в этот текст по одному разу #16
Можно вот так решить
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <algorithm>
using namespace std;
int main() 
{ 
    char str[] = "ASASFSAWFAFASASD"; // исходный массив
    int size = strlen(str);   // размер
    sort(str, str+size);   // сортируем по алфавиту
    int flag = 0;  // количество совпадений
    
    for ( int j = 0; j < size; j++)  
    {
        for ( int i = 0; i < size; i++) 
        { 
            if(str[j] == str[i]) // если буквы совпали
                flag++; // увеличиваем счётчик
        } 
        if(flag == 1) // если 1 значит встречается один раз
            cout << str[j];   
        flag = 0;   // сбрасываем счётчик
    } 
    cout << endl;
}
Dekio
Фрилансер
Эксперт C++
 Аватар для Dekio
5816 / 1214 / 214
Регистрация: 23.11.2010
Сообщений: 3,378
Записей в блоге: 1
12.07.2012, 12:46     Дан массив из строчных латинских букв. Вывести на экран в алфавитном порядке все буквы, которые входят в этот текст по одному разу #17
David Sylva,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <string>
#include <map>
 
int main()
{
    std::string Str = "ASASFSAWFAFASASD";
    std::map <char, int> Map;
    for(char &i: Str)
       Map[i]++;
    for(auto &it: Map)
       if(it.second == 1)
          std::cout<<it.first;
    return 0;
}
Warbit
1 / 1 / 0
Регистрация: 06.12.2012
Сообщений: 9
27.12.2012, 17:53     Дан массив из строчных латинских букв. Вывести на экран в алфавитном порядке все буквы, которые входят в этот текст по одному разу #18
Я попробовал для одномерного символьного массива:
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
#include <iostream>
#include <conio.h>
 
using namespace std;
const int ALPHA = 26;
int main()
{
    char text[100] ;//массив с введенным текстом
    for (int r = 0; r < 100; r++)
    {
        text[r] = '0';
    }
    cout << "Enter the text: " << endl;
    cin.getline(text,99);
    char letters[ALPHA]; //массив для хранения в алфавитном порядке единожды встречаемых букв
    int i = 0;
    for (char n = 'a'; n <= 'z'; n++)
    {
        int count = 0;
        for (int k = 0; k < 100; k++)
        {
            if (text[k] == n)
                count++;
        }
        if (count == 1)
        {
            letters[i] = n;
            i++;
        }
    }
    for (int e =0; e < ALPHA; e++)
    {
        cout << letters[e];
    }
    _getche();
    return 0;
}
на выходе шлак какой то получается. Подскажите где собака зарыта, плз
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.12.2013, 06:37     Дан массив из строчных латинских букв. Вывести на экран в алфавитном порядке все буквы, которые входят в этот текст по одному разу
Еще ссылки по теме:

Дан текст из строчных латинских букв, за которым следует точка. Напечатать: б) все буквы, входящие в текст по одному разу; C++
C++ Напечатать в алфавитном порядке все глухие согласные буквы, которые входят в текст
C++ Вывести на экран в алфавитном порядке все символы, которые входят в заданный массив по одному разу

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

Или воспользуйтесь поиском по форуму:
volodin661
 Аватар для volodin661
572 / 505 / 82
Регистрация: 10.12.2013
Сообщений: 1,671
Записей в блоге: 1
12.12.2013, 06:37     Дан массив из строчных латинских букв. Вывести на экран в алфавитном порядке все буквы, которые входят в этот текст по одному разу #19
Цитата Сообщение от sashagamer Посмотреть сообщение
Дан массив из строчных латинских букв. Вывести на экран в алфавитном порядке все буквы, которые входят в этот текст по одному разу.
помогите плиз, ато не получается никак...
РАЗВЛЕКАЮСЬ
для сравнения на PERL

для массива "xaabbbyccczoo":

Perl 6
1
2
s/ (.) / $a{$1}++ /grex for "xaabbbyccczoo";
print sort grep{ $a{$_} < 2 } keys %a;
Yandex
Объявления
12.12.2013, 06:37     Дан массив из строчных латинских букв. Вывести на экран в алфавитном порядке все буквы, которые входят в этот текст по одному разу
Ответ Создать тему
Опции темы

Текущее время: 06:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru