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

как написать данную программу для char?

08.12.2021, 11:01. Показов 1360. Ответов 25
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, помогите пожалуйста написать этот код для char.
вот код для string:

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
#include <iostream>
#include <string>
#include <conio.h>
using namespace std;
 
string bin(unsigned long long n)
{
    string result;
    do
    {
        result = char(int('0') + (n % 2)) + result;
        n = n / 2;
    } while (n > 0);
    return result;
}
 
unsigned long long int toint(string s)
 
{
    if (s.size() == 1)
        return s[0] - '0';
    int i = s.size() - 1;
    return toint ( s.substr( 0, i ) ) * 10 + s[i] - int('0');
}
 
int main()
{
    unsigned long long int n;
    cin >> n;
    int counter = 0 , i = 1;
    string s;
        while ( counter < n)
        {
            s = bin(i);
            string ss = bin( toint ( s ) );
            string sss = ss.substr(ss.size() - s.size());
            if(sss == s) counter++;
            i++;
        }
    cout << s;
 
    getch();
    return 0;
}
я написал свою функцию для длины строки:
C++ Скопировано
1
2
3
4
5
6
7
8
9
10
11
int Length(char* array) {  //определяет длину массива
    int size = 0;
    
    for (int i = 0; i < 255; i++)
    {
        
        if (array[i] == '\0' || array[i] == '\n')
            return size;
        else size++;
    }
}
и свою функцию SubStr:
C++ Скопировано
1
2
3
4
5
char* SubStr(char* s, const int i)
{
    *(s + i) = '\0';
    return s;
}
Нужно для тренировки, помогите пожалуйста
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.12.2021, 11:01
Ответы с готовыми решениями:

Как написать данную программу на c++?
Сколько не пытался, ничего не выходит.

Как написать данную программу на С++?
Ввести с клавиатуры целое число S – сумму денег (от 1 до 100). Рассчитать и напечатать минимальное число монет достоинством 1, 2, 5 и 10...

как написать данную программу?
как записать в каждый пятый элемент массива значения предыдущего байта на процессоре intel 8051H??

25
2 / 2 / 0
Регистрация: 18.09.2021
Сообщений: 413
08.12.2021, 14:45  [ТС] 21
Author24 — интернет-сервис помощи студентам
DeCrinal, всеравно программа останавливается и не считает...

Добавлено через 1 час 4 минуты
У меня пишет: Ошибка при чтении символов ( там где nullptr) . Как это можно исправить?
0
 Аватар для DeCrinal
64 / 40 / 31
Регистрация: 15.04.2017
Сообщений: 176
08.12.2021, 14:55 22
Пришлите код.
Сейчас пытаюсь отладить вашу программу, но не особо понимаю, чего вы в цикле while(counter<n)... хотите получить
0
2 / 2 / 0
Регистрация: 18.09.2021
Сообщений: 413
08.12.2021, 14:59  [ТС] 23
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
#include <iostream>
 
std::size_t length(const char* string) {
    std::size_t size = 0;
    if (string == nullptr)
        return 0;
    char* temp = const_cast<char*>(string);
    for (; *string != 0; ++size, ++temp);
    return size;
}
 
int Strcmp(const char* lhs, const char* rhs) {
    while (*lhs && *rhs) {
        if (*lhs < *rhs)
            return -1;
        if (*lhs++ > *rhs++)
            return 1;
    }
    return *lhs == *rhs ? 0 : (*lhs == '\0' ? -1 : 1);
}
 
char* substring(const char* s, const int board)
{
    int n = length(s); //или Length(s)
    if (n > board)
        n = board;
    char* newStr = new char[n + 1];
    for (int i = 0; i < n; i++) {
        newStr[i] = s[i];
    }
    newStr[n - 1] = '\0';
    return newStr;
}
 
char* bin(unsigned long long n)
{
 
    char tempResult = char(int('0') + (n % 2));
    char* result = new char[150];
    int amountOfSymbs = 0;
    while (n > 0) {
        tempResult = char(int('0') + (n % 2)) + tempResult;
        n = n / 2;
        result[amountOfSymbs] = tempResult;
        amountOfSymbs++;
    };
    result[amountOfSymbs] = '\0';
    return result;
}
 
unsigned long long int toint(char* s)
 
{
    if (length(s) == 1)
        return s[0] - '0';
    int i = length(s) - 1;
    char* m = 0;
 
    return toint(substring(s, i)) * 10 + s[i] - int('0');
}
 
int main() {
 
    unsigned long long int n;
    std::cin >> n;
    int counter = 0, i = 1;
 
    char* s = nullptr;
    while (counter < n)
    {
        char* ss = nullptr;
        size_t s_Length = length(s);
        size_t ss_Length = length(ss);
        size_t sss_Length = length(ss) - length(s);
        char* sss = new char[sss_Length + 1];
 
        s = bin(i);
 
        substring(sss, ss_Length - s_Length);
       
        if (!Strcmp(s, sss)) counter++;
        i++;
    }
    
    std::cout << s;
    delete[]s;
    return 0;
}
0
 Аватар для DeCrinal
64 / 40 / 31
Регистрация: 15.04.2017
Сообщений: 176
08.12.2021, 15:01 24
Что в цикле while должно считаться?
0
 Аватар для SmallEvil
3791 / 2717 / 765
Регистрация: 29.06.2020
Сообщений: 9,983
08.12.2021, 16:38 25
Лучший ответ Сообщение было отмечено volver как решение

Решение

Цитата Сообщение от volver Посмотреть сообщение
как написать данную программу для char?
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
#include <iostream>
using std::cout; using std::endl;
int strcmp(const char* lhs, const char* rhs){
    while(*lhs && *rhs){
        if (*lhs<*rhs)
            return -1;
        if (*lhs>*rhs)
            return 1;
        ++lhs;++rhs;
    }
    return *lhs==*rhs ? 0 : (*lhs=='\0' ? -1: 1);
}
size_t strlen(const char * src){
    size_t size = 0;
    while(*(src++)!='\0')
        ++size;
    return size;
}
void to_bin(size_t num, char * dest){
    char res[64];
    int i=sizeof(res)-1;
    do{
        res[i--] = '0' + num % 2;
        num /=2;
    }while(num);
    for (int k = i+1; k < sizeof(res); ++k)
        *(dest++) = res[k];
    *dest = '\0';
}
size_t from_bin(const char * src){
    size_t res = 0;
    while(*src!='\0'){
        res*=2;
        res += (*src) - '0';
        ++src;
    }
    return res;
}
size_t from_str(const char* src){
    size_t res = 0;
    while(*src!='\0'){
        res *=10;
        res += (*src - '0');
        ++src;
    }
    return res;
}
void substr(const char * src, char * dest, size_t pos, size_t count)  // НЕбезопасная функция!!!
{
    while(pos != 0)
        ++src, --pos;
    while (count!=0){
        *(dest++) = *(src++);
        --count;
    }
    *dest = '\0';
}
 
 
int main()
{
    char s[100], ss[100], sss[100];
    int n = 10, i = 1, counter = 0;
    std::cin >> n;
    while ( counter < n)
    {
        to_bin(i, s);
        to_bin(from_str(s), ss);
        substr(ss, sss, strlen(ss) - strlen(s), strlen(s));
        if(strcmp(sss, s)==0) counter++;
        i++;
    }
    cout << s << endl;
    return 0;
}
1
2 / 2 / 0
Регистрация: 18.09.2021
Сообщений: 413
08.12.2021, 18:50  [ТС] 26
SmallEvil, спасибо большое)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.12.2021, 18:50
Помогаю со студенческими работами здесь

Как написать данную программу
в файле заданы натуральные числа подсчитать количество пар чисел отстоящих друг от друга не менее чем на 3 позиции и произведение которых...

как написать данную программу через функцию?
#include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; main() { int i,a=0; float k=0,M; ...

Как написать данную программу через функцию?
#include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; main() { int i,a=0; float k=0,M; ...

Прошу совета, как лучше написать данную программу!
Написать программу(в динамических массивах, элементы которых заданы случайным образом) которая меняет значения элементов квадратной матрицы...

Прошу совета, как лучше написать данную программу!
Пусть задано число, решённых задач и в следующей строке перечислены номера задач в том порядке, в котором они решены. Задача называется...


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

Или воспользуйтесь поиском по форуму:
26
Ответ Создать тему

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Новые блоги и статьи
Kafka или Pulsar: Что лучше для потоковой обработки в Java
Javaican 14.03.2025
Среди множества решений для потоковой обработки данных Apache Kafka долгое время удерживала лидирующие позиции, став де-факто стандартом в индустрии. Однако в последние годы всё больше внимания. . .
Создание и использование компонентов в Vue 3
Reangularity 14.03.2025
Компонент в Vue - это автономный блок интерфейса, который содержит собственную разметку, логику и стили. Представьте себе кнопку, форму ввода или даже целую панель навигации - всё это можно оформить. . .
Vue 3: Создаем современное веб-приложение с Composition API
Reangularity 14.03.2025
В фронтенд-разработке Vue 3 выделяется своим прагматичным подходом. В отличие от React с его минималистичной философией "всё — JavaScript" или Angular с его всеобъемлющим корпоративным подходом, Vue. . .
Разработка контекстных меню в iOS
mobDevWorks 14.03.2025
С приходом iOS 13 Apple представила новый API для контекстных меню, который полностью заменил предыдущую технологию 3D Touch peek & pop. Хотя многие разработчики и пользователи испытывают ностальгию. . .
Лучшие практики оптимизации Docker Image
Mr. Docker 13.03.2025
Размер Docker-образа влияет на множество аспектов работы с контейнерами. Чем больше образ, тем дольше его загрузка в реестр и выгрузка из него. Для команд разработки, работающих с CI/ CD пайплайнами,. . .
Вопросы на собеседовании по Docker
Mr. Docker 13.03.2025
Ты сидишь напротив технического специалиста, и вдруг звучит вопрос про Docker Swarm или многоэтапные сборки. Пот на лбу? Не переживай, после этой статьи ты будешь готов ко всему! Эта статья будет. . .
Поиск текста в сносках : замена дефиса на тире или тире на дефис...
РоΜа 13.03.2025
Нужно было найти текст в сносках и заменить. Почему-то метод селекшн не сработал. . . пришлось гуглить. найденный на форумвба код пришлось править. Смысл - заменяет в сносках дефисы и тире на нужные. . . .
Real PATH definitions in bash scripts
jigi33 13.03.2025
Как поймать путь и путь к директории относительно запускаемого файла в BASH 1. поймать путь через вывод $(pwd) 2. более правильно - на основе realpath (см. скриншот)
Django или Flask: что выбрать для веб-разработки на Python
py-thonny 13.03.2025
Django – это высокоуровневый фреймворк, который придерживается философии "всё включено". Он предоставляет разработчику готовые решения для большинства типичных задач веб-разработки: от аутентификации. . .
Непрерывное развертывание в Java с Kubernetes
Javaican 13.03.2025
Чем так привлекателен Kubernetes для развертывания Java-приложений? Этот оркестратор контейнеров позволяет автоматизировать развертывание, масштабирование и управление контейнеризированными. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер