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

Вывод цифр вместо букв

11.11.2022, 15:32. Показов 1060. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Выводит цифры вместо букв.В чем проблема?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
string lcs(const string& first, const string& second) {
    if (second.length() == 0 || first.length() == 0)
        return "";
    if (first.back() == second.back())
        return lcs(first.substr(0, first.length() - 1), second.substr(0, second.length() - 1))+ first.back();
    else {
        string left, right;
        left = lcs(first.substr(0, first.length() - 1), second);
        right = lcs(first, second.substr(0, second.length() - 1));
        if (left.length() > right.length())
            return left;
        else
            return right;
    }
}
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 "lcs.h"
#include <string>
#include <time.h>
#include <iostream>
using namespace std;
const int K = 10, N = 15;
int main() {
    srand(time(NULL));
    string first;
    string second;
    static string symbol = "abcdefghijklmnopqrstuvwxyz";
    for (int i = 0; i < N; i++) {
        first = symbol[rand() % symbol.length()]; cout << first;
    }
   
    cout <<"\n"<< endl;
    for (int i = 0; i < K; i++) {
        second= symbol[rand() % symbol.length()];cout << second;
    }
    
    cout << endl;
    cout << lcs;
 
}
Миниатюры
Вывод цифр вместо букв  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.11.2022, 15:32
Ответы с готовыми решениями:

Ввод букв вместо цифр
Привет. Я новичок. Подскажите как сделать так чтобы, в консольной программе при вводе букв вместо цифр выдавалось сообщение об ошибке.

Вывод цифр, вместо текста
Здравствуйте, у проблема, когда я использую ввод данных cin, и называю имя. У меня вместо имени, цифры что-то вроде этого: -8341235 ...

Вывод цифр вместо символов
Добрый день, есть ли объяснение тому, почему в данном примере вместо символов 'abc' выводится набор цифр? Спасибо. #include...

18
Лежебока
 Аватар для Donkix
328 / 244 / 95
Регистрация: 12.05.2021
Сообщений: 1,429
Записей в блоге: 2
11.11.2022, 16:42
Цитата Сообщение от Шляпадляменя Посмотреть сообщение
cout << lcs;
22: это вызов вашей функции?

Добавлено через 1 минуту
Если да, то где параметры передаваемые ей?

Добавлено через 19 минут
Новый main, онлайн компилятор выводит буквы
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int main() {
    srand(time(NULL));
    char first[K];
    char second[K];
    static string symbol = "abcdefghijklmnopqrstuvwxyz";
    for (int i = 0; i < N; i++) {
        first[i] = symbol[rand() % symbol.length()];
    }
 
   
    cout <<"\n"<< endl;
    for (int i = 0; i < K; i++) {
        second[i]= symbol[rand() % symbol.length()];;
    }
    
    string ptr(first);
    string ptr2(second);
    
    cout << endl;
    cout << lcs(ptr,ptr2);
 
}
Добавлено через 2 минуты
Ранее ты пытался работать со строкой как с массивом, но так неправильно
1
Гвоздь Задиров
 Аватар для Folian
1718 / 1117 / 337
Регистрация: 25.01.2019
Сообщений: 2,940
11.11.2022, 16:47
Цитата Сообщение от Donkix Посмотреть сообщение
работать со строкой как с массивом, но так неправильно
Чойта?
0
Лежебока
 Аватар для Donkix
328 / 244 / 95
Регистрация: 12.05.2021
Сообщений: 1,429
Записей в блоге: 2
11.11.2022, 17:19
Цитата Сообщение от Folian Посмотреть сообщение
Чойта?
*без комментариев - пояснить не смогу*
0
Гвоздь Задиров
 Аватар для Folian
1718 / 1117 / 337
Регистрация: 25.01.2019
Сообщений: 2,940
11.11.2022, 17:39
Цитата Сообщение от Donkix Посмотреть сообщение
без комментариев - пояснить не смогу
всё там можно
C++
1
2
3
4
5
6
7
    std::size_t size { 5 };
    std::string str(size, '\0');
 
    for(std::size_t i { 0 }; i < str.length(); ++i)
        str[i] = rand()%('z' - 'a') + 'a';
 
    std::cout << str;
0
Лежебока
 Аватар для Donkix
328 / 244 / 95
Регистрация: 12.05.2021
Сообщений: 1,429
Записей в блоге: 2
11.11.2022, 18:49
Folian,
Ну бывает
0
Модератор
Эксперт С++
 Аватар для zss
13770 / 10963 / 6491
Регистрация: 18.12.2011
Сообщений: 29,240
12.11.2022, 11:10
Цитата Сообщение от Donkix Посмотреть сообщение
char first[K];
char second[K];
Нужно добавить еще один байт для терминального нуля
C++
1
2
char first[K+1]={0};
char second[K+1]={0};
иначе в
Цитата Сообщение от Donkix Посмотреть сообщение
string ptr(first);
string ptr2(second);
Не получится правильно определить длину строки
0
0 / 0 / 0
Регистрация: 12.11.2022
Сообщений: 1
12.11.2022, 11:21
Thanks
Dnokix you sharing Information I Just Tried It Works Awesome
GBwhatsapp
0
Заблокирован
12.11.2022, 11:32
Цитата Сообщение от zss Посмотреть сообщение
char second[K+1]={0};
Писать нуль в качестве единичного инициализатора думая что он заполнит ими весь массив - распространенная ошибка.
Если ее нет в шапке, нужно добавить
Это просто совпадения, что char по умолчанию инициализируется тоже нулем, так же как и первый элемент.
С наилучшими мотивами.
1
0 / 0 / 0
Регистрация: 11.09.2021
Сообщений: 77
12.11.2022, 12:33  [ТС]
Теперь выводит всю первую строку и закорючки
Donkix,
cout << lcs(ptr,ptr2);
Миниатюры
Вывод цифр вместо букв  
0
0 / 0 / 0
Регистрация: 11.09.2021
Сообщений: 77
12.11.2022, 12:44  [ТС]
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
#include "lcs.h"
#include <string>
#include <time.h>
#include <iostream>
#include <stdio.h>
using namespace std;
const int K = 10, N = 15;
int main() {
    srand(time(NULL));
    char first[N+1];
    char second[K+1];
    static string symbol = "abcdefghijklmnopqrstuvwxyz";
    for (int i = 0; i < N; i++) {
        first[i] = symbol[rand() % symbol.length()]; 
        
    }
    cout << first;
     cout <<endl;
    for (int i = 0; i < K; i++) {
        second[i]= symbol[rand() % symbol.length()];
        
    }
    cout << second;
    cout << endl;
    string ptr(first);
    string ptr1(second);
    cout << endl;
    cout << lcs(ptr,ptr1);
 
}
вывод
Миниатюры
Вывод цифр вместо букв  
0
Модератор
Эксперт С++
 Аватар для zss
13770 / 10963 / 6491
Регистрация: 18.12.2011
Сообщений: 29,240
12.11.2022, 12:49
Цитата Сообщение от Шляпадляменя Посмотреть сообщение
и закорючки
Именно потому, что нет терминального нуля
Я предложил написать
Цитата Сообщение от zss Посмотреть сообщение
char first[K+1]={0};
char second[K+1]={0};
именно потому, что весь массив оказывается заполненным нулями.
Во всяком случае, в VS это работает.
Можете для надёжности написать
C++
1
2
3
char first[K+1];
char second[K+1];
first[K]=second[K]=0;
1
Гвоздь Задиров
 Аватар для Folian
1718 / 1117 / 337
Регистрация: 25.01.2019
Сообщений: 2,940
12.11.2022, 13:02
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
const int K = 10, N = 15;
int main() {
    srand(time(NULL));
    string first(N, 0);
    string second(K, 0);
    static string symbol = "abcdefghijklmnopqrstuvwxyz";
    for(int i = 0; i < N; i++) {
        first[i] = symbol[rand() % symbol.length()];// cout << first;
    }
 
    //cout << "\n" << endl; // 0_o
    for(int i = 0; i < K; i++) {
        second[i] = symbol[rand() % symbol.length()];// cout << second;
    }
 
    cout << first << "\n" << second << "\n";
    cout << endl;
    cout << lcs(first, second);
 
}
Цитата Сообщение от zss Посмотреть сообщение
Во всяком случае, в VS это работает.
Эт везде должно работать. То что недоинициализировано будет инициализировано значением по умолчанию, тут ноль. Т.е. даж пустые скобки оставить можно, без нуля внутри, и всё инициализируется дефолтным значением.
0
Модератор
Эксперт С++
 Аватар для zss
13770 / 10963 / 6491
Регистрация: 18.12.2011
Сообщений: 29,240
12.11.2022, 13:06
Цитата Сообщение от SmallEvil Посмотреть сообщение
Писать нуль в качестве единичного инициализатора думая что он заполнит ими весь массив - распространенная ошибка.
Цитата Сообщение от Folian Посмотреть сообщение
Эт везде должно работать.
Мне кажется, что должно работать везде.
0
Гвоздь Задиров
 Аватар для Folian
1718 / 1117 / 337
Регистрация: 25.01.2019
Сообщений: 2,940
12.11.2022, 13:09
Цитата Сообщение от zss Посмотреть сообщение
Не знаю, кто из Вас прав.
Он о том же самом пишет; т.е., перефразируя, "нельзя думать что char c[4] { 'a' }; инициализирует все элементы символом 'a', вместо этого там будет { 'a', '\0', '\0', '\0' }"
2
Заблокирован
12.11.2022, 13:10
Цитата Сообщение от Folian Посмотреть сообщение
Эт везде должно работать.
Цитата Сообщение от zss Посмотреть сообщение
Мне кажется, что должно работать везде.
Что это ? Я потерял вашу мысль господа.
C++
1
int k[5] = {1}; // массив заполнится единичками ?
0
Модератор
Эксперт С++
 Аватар для zss
13770 / 10963 / 6491
Регистрация: 18.12.2011
Сообщений: 29,240
12.11.2022, 13:16
SmallEvil, Folian, Прошу пардона, мне казалось очевидным,
что незаполненная часть всегда заполняется нулями.
А один нуль я написал для ТС, чтобы ему было очевиднее, что нужен ноль.
1
Заблокирован
12.11.2022, 13:24
Цитата Сообщение от zss Посмотреть сообщение
что незаполненная часть всегда заполняется нулями.
Не нулями, а значением по умолчанию, это важно понимать.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
 
using namespace std;
struct A{
   A():a{1}{};
   A(int val):a{val}{};
   int a;      
};
 
int main()
{
    A arr[5]{0};
    for (auto v: arr)
        cout << v.a << ' ';
}
Code
1
0 1 1 1 1
То есть, нужно четко понимать, что вы инициализируете массив, первое значение то что в скобках, остальное, дефолтное.

Добавлено через 48 секунд
И это не очевидно для новичков, совсем-совсем
1
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12930 / 6798 / 1819
Регистрация: 18.10.2014
Сообщений: 17,202
12.11.2022, 22:49
Цитата Сообщение от SmallEvil Посмотреть сообщение
Писать нуль в качестве единичного инициализатора думая что он заполнит ими весь массив - распространенная ошибка.
Если ее нет в шапке, нужно добавить
Это не ошибка, а обязательная для понимания и использования идиома из языка С. В С++ она не менее применима для инициализации скалярных типов и агрегатов из них. В С++ такую инициалзацию можно записывать как = { 0 } и как = {}, но первый вариант доминирует именно из-за возможной необходимости сохранять совместимость с С в ряде контекстов.

Что интересно, С23, наконец разрешит писать = {}, что формально сделает = {} идиоматическим обнулителем скалярных типов в обоих языках, но все таки = { 0 } - это настолько "святое", что держаться оно будет еще долго.

Цитата Сообщение от SmallEvil Посмотреть сообщение
Это просто совпадения, что char по умолчанию инициализируется тоже нулем, так же как и первый элемент.
Нет, это не просто совпадения.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.11.2022, 22:49
Помогаю со студенческими работами здесь

Вывод текста на консоль, закарючки вместо букв
Я создал консольное win32 приложение в vs2010. Попробовал cout'ом вывести текст русскими буквами - вылезли разные закарючки. Ну эту...

Вывод непонятных символов вместо русских букв
Здравствуйте, возникла такая проблема, что при выводе строки в методе Show() тот текст, который вводился с клавиатуры на русском языке,...

Что сделать, чтобы при записи в пример букв, вместо цифр, программа не работала
Как и где нужно прописать, чтобы при записи числа и буквы, программа не работала? х-у=... 7-6= все работает, так и нужно 7-а=...

Вывод в документ: китайские иероглифа вместо русских или английских букв
В коде какато фигня. Он написан и по идее работает, но вот с языком вывода проблема. Когда записываешь что-то в документ он записывает...

Вывод на экран букв, удаление цифр
помогите решить задачу по программированию на языке с++ Вывести на экран только буквы и знаки &quot;.&quot; и &quot;,&quot;. Удалив...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru