Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
0 / 0 / 0
Регистрация: 11.02.2014
Сообщений: 100

Вывести на экран алфавит строки

07.10.2014, 20:20. Показов 2682. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно вывести на экран алфавит слова, то есть все различные буквы. К примеру, есть слово "alfavit", нужно чтобы вывело только "alfvit". Проверяю каждый символ строки s, если он не содержится в строке a, то добавляю его к строке a. Вот код, думаю неправильно делаю добавление, помогите разобраться.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int _tmain(int argc, _TCHAR* argv[])
{
    char s[] = "alfavit";
    char a[100];
    
    for (int i = 0; i < 100; i++)
        a[i] = 0;
    
    for (int i = 0; i < strlen(s); i++)
    {
        for (int n = 0; n < strlen(a); n++)
        {
            if (s[i] != a[n])
                strncpy_s(a, s, 1);
 
        }
    
    }
    printf("%s\n", a);
    return 0;
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.10.2014, 20:20
Ответы с готовыми решениями:

вывести на экран русский алфавит.
1)дана последовательность, которая заканчивается нулем.Найти второй положительный элемент. 2)вывести на экран русский алфавит.

Вывести на экран латинский алфавит
Вывести на экран латинский алфавит в прямом порядке от A до Z(красным цветом) и обратном порядке от Z до A (желтым цветом). Используйте...

Вывести на экран латинский алфавит
Вывести на экран латинский алфавит в прямом порядке от A до Z(красным цветом) и обратном порядке от Z до A (желтым цветом). Используйте...

6
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
07.10.2014, 20:54
Неправильно подход выбран.
еще strlen(a) становится равен нулю (т.е. холостой цикл) на каждой итерации.
C++
1
2
3
for (int i = 0; i < strlen(s); i++)
    {   //Выведи на экран и проверь strlen(a)
        for (int n = 0; n < strlen(a); n++)
неправильный, т.к. каждый новый раз если символы не равны, то должны добавлятся, а среди них может быть много одинаковых.

сокр.пример
абавга
б!=а ==>а //левая а
б!=а ==>а //правая а

можно так
C++
1
2
3
4
5
6
7
8
9
char s[] = "alfavit";
    int arr[256]={};
 
    for (int i=0;i<strlen(s);i++){
        if ((arr[s[i]]==0)) {
            arr[s[i]]++;
            cout<<s[i];
        };
    }
1
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
07.10.2014, 21:06
dark009, держи
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
#include <iostream>
using namespace std;
 
long  word_length(char * word){
    long length = 0;
    while( word[length] )
           length++;
    return length;
}
 
char * move_num_chars(char alpha, char * word){
    long length= word_length(word);
    char * fnd = strchr(word,    alpha);
    while((fnd = strchr(fnd + 1, alpha)) != 0 )
        if( strcpy( fnd, fnd + 1 ) )
            word[--length] = 0;
    return word;
}
 
int main(){
    char word[] = "alfavit";
    cout<<"INPUT : "<<word<<endl;
    for( int i = 0; word[i]; i++ )
        strcpy(word, move_num_chars(word[i], word));
    cout<<"OUTPUT : "<<word<<endl;
    return 0;
}
INPUT : alfavit
OUTPUT : alfvit
http://codepad.org/gvsIq8dA
1
 Аватар для orange_fox
34 / 34 / 8
Регистрация: 06.04.2014
Сообщений: 189
07.10.2014, 21:11
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
#include <string>
#include <iostream>
#include <algorithm>
 
using namespace std;
 
 
void displayUnique(const string& str)
{
    if (str.size() >= 2)
    {
        cout << str[0];
        string::const_iterator iter;
        for (iter = str.begin() + 1; iter != str.end(); ++iter)
        {
            if (find(str.begin(), iter, *iter) == iter)
            {
                cout << *iter;
            }
        }
    }
    else cout << str;
 
}
 
int main()
{
    displayUnique("aaabaaac") //abc;
 
    system("pause");
}
2
07.10.2014, 21:46

Не по теме:

dark009, по ссылке вариант если хотим совсем без стандартных функций работы со строками
http://codepad.org/gMAJBaUq

0
0 / 0 / 0
Регистрация: 11.02.2014
Сообщений: 100
07.10.2014, 22:08  [ТС]
Добавлено через 1 минуту
Цитата Сообщение от daslex Посмотреть сообщение
Неправильно подход выбран.
еще strlen(a) становится равен нулю (т.е. холостой цикл) на каждой итерации.
C++
1
2
3
for (int i = 0; i < strlen(s); i++)
    {   //Выведи на экран и проверь strlen(a)
        for (int n = 0; n < strlen(a); n++)
неправильный, т.к. каждый новый раз если символы не равны, то должны добавлятся, а среди них может быть много одинаковых.

сокр.пример
абавга
б!=а ==>а //левая а
б!=а ==>а //правая а

можно так
C++
1
2
3
4
5
6
7
8
9
char s[] = "alfavit";
    int arr[256]={};
 
    for (int i=0;i<strlen(s);i++){
        if ((arr[s[i]]==0)) {
            arr[s[i]]++;
            cout<<s[i];
        };
    }
Можете эти строчки объяснить?
C++
1
2
3
4
if ((arr[s[i]]==0)) {
            arr[s[i]]++;
            cout<<s[i];
        };
s[i] это же получается символ строки, а символ разве может быть индексом элемента массива? Или нет?
0
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
07.10.2014, 22:25

Не по теме:

-=ЮрА=-, так ведь чужие мозги можно очень быстро осадить :D
без функций работы со строками делается короче и понятнее.
и там strcpy (не совсем уже и совсем, незначительно, но такое вот но)



Добавлено через 5 минут
dark009, символ по сути число. Это ASCII код, который имеет числовое представление, поэтому может быть индексом вполне. Т.к. в char вмещается 256 символов, то достаточно массива в 256 элементов.

Здесь в моем коде код символа является индексом массива.

Добавлено через 11 минут
C++
1
2
3
4
if ((arr[s[i]]==0)) {  //Если ячейка массива для символа с кодом s[i] не встречалась
            arr[s[i]]++;  //обозначаем, что мы ее уже встретили
            cout<<s[i]; //так как встретили то, что пока еще не встречалось-выводим на экран
        };
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.10.2014, 22:25
Помогаю со студенческими работами здесь

Задана матрица: требуется вывести ее на экран так, чтобы каждая строка матрицы выводилась на экран с новой строки
Задана матрица A размера 5х7. Требуется вывести ее на экран так, чтобы каждая строка матрицы выводилась на экран с новой строки. Буду...

Даны три строки. Вывести строки на экран в порядке убывания их длин
Даны три строки. Вывести строки на экран в порядке убывания их длин. Вот что я написал #include &lt;string.h&gt; #include...

Программа на строки: из данной строки вывести на экран только числа
Народ помогите пожалуйста написать программу на строки. Задание такое, нужно ввести любые знаки,символы и цифры и нужно чтобы из этой...

Вывести на экран строки, размер которых больше среднего размера строки в файле.
1)Организовать текстовый файл, состоящий из N строк. Вывести на экран строки, размер которых больше среднего размера строки в файле.

Вывести на экран строки, размер которых больше среднего размера строки в файле
Ребятки....помогите пожалуйста с РГЗ!!!:cry: Организовать текстовый файл, состоящий из N строк. Вывести на экран строки, размер...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru