С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
0 / 0 / 0
Регистрация: 04.11.2018
Сообщений: 14
1

Реализовать функцию ItoA и сравнить со стандартной функцией

04.11.2018, 11:26. Показов 3105. Ответов 22

Author24 — интернет-сервис помощи студентам
Здравствуйте, передо мной стоит задача реализовать функцию ItoA и сравнить со стандартной функцией
Реализую так , но стоит также задача выполнить эту задачу использую для хранения строк динамически распределяемую память... Как мне создавать размер строки если я не знаю каким получится значение после перевода в нужную систему счисления??? Помогите пожалуйста
C++ (Qt)
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
// I to A
 
 
#include "stdafx.h"
#include <windows.h>
#include <iostream>
#include <math.h>
#include <stdlib.h>
#include <locale>
 
using namespace std;
 
 
void ITOA_J(int value, int S) {
    int chislo, osnovanie;
 
    /*cout << "Введите число: ";
    cin >> chislo;
    cout << "В какую систему счисления перевести? -> ";
    cin >> osnovanie;*/
 
    char stroka[100] = "";
    chislo = value;
    osnovanie = S;
 
    //переведем 
    int z = 0;
    do {
        int digit = chislo % osnovanie;
        stroka[z++] = (digit > 9) ? digit - 10 + 'A' : digit + '0';
    } while ((chislo /= osnovanie) != 0);
 
    stroka[z] = '\0';
 
 
    //запишем наоборот
    for (int i = 0; i < z / 2; ++i) {
        char symbol = stroka[i];
        stroka[i] = stroka[z - i - 1];
        stroka[z - i - 1] = symbol;
    }
 
 
 
    cout << "Результат функции (Реализовано ItoA_J): " << stroka << endl;
}
 
 
 
int main()
{
    setlocale(LC_ALL, "Russian");
 
 
 
    int value, S;
 
    char str[100] = "";
 
    cout << "Введите число: ";
    cin >> value;
    cout << "В какой системе счисления вывести? -> ";
    cin >> S;
    cout << endl;
 
    _itoa_s(value, str, S);
 
    cout << "Введённое число в " << S << "-тичной системе счисления (РЕАЛИЗОВАНО _ITOA_S):  " << str << endl;
 
    ITOA_J(value, S);
 
    system("pause");
 
 
 
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.11.2018, 11:26
Ответы с готовыми решениями:

Реализовать файл-функцию,выполняющуюся по образу и подобию стандартной функции
реализовать файл-функцию,выполняющуюся по образу и подобию стандартной функции norm

Реализовать файл-функцию,выполняющуюся по образу и подобию стандартной функции системы МатЛаб
Всем здрасте))) Помогите плиз....а то все голову изломал себе.....ужас.. Реализовать...

Реализовать файл-функцию,выполняющуюся по образу и подобию стандартной функции системы MATLAB sort
Всем доброго времени суток) Прошу помочь в написании файл-функции. Реализовать...

миниизображения стандартной функцией
привет, стоит стандартная сборка lamp (пробовал под виндой на денвере) &lt;? $filename = 'test.jpg';...

22
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
04.11.2018, 12:14 2
Выдели с запасом, учитывая диапазон int.
0
0 / 0 / 0
Регистрация: 04.11.2018
Сообщений: 14
04.11.2018, 12:43  [ТС] 3
С запасом - не та реализация.
0
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
04.11.2018, 12:58 4
А какая та? Под int хватит 15 символов.
0
0 / 0 / 0
Регистрация: 04.11.2018
Сообщений: 14
04.11.2018, 13:08  [ТС] 5
мы вводим 10 int,
а выводим строку... char
причем неизвестно какая длинна у нас будет
так при переводе 156(10)-> двоичная -> нам надо создать строку достаточного размера для записи 10011100
0
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
04.11.2018, 13:10 6
Возьми 50.
0
0 / 0 / 0
Регистрация: 04.11.2018
Сообщений: 14
04.11.2018, 13:11  [ТС] 7
допусти я могу создать проверку сколько мне понадобится символов
получу некоторое значение N
как мне можно создать строк[N] чтобы потом ее еще передать в стандартную функцию _itoa_s ???
0
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
04.11.2018, 13:16 8
new.
0
Диссидент
Эксперт C
27707 / 17325 / 3810
Регистрация: 24.12.2010
Сообщений: 38,979
04.11.2018, 13:21 9
Лучший ответ Сообщение было отмечено Good_Y как решение

Решение

Good_Y, я бы использовал string. Этот класс саморасширяющийся (в смысле памяти). а для перевода в строку - метод c_str()
0
0 / 0 / 0
Регистрация: 04.11.2018
Сообщений: 14
04.11.2018, 13:35  [ТС] 10
если кому-нибудь не сложно не могли бы показать как... прост я не понимаю как это прикрутить к моему коду
0
Диссидент
Эксперт C
27707 / 17325 / 3810
Регистрация: 24.12.2010
Сообщений: 38,979
04.11.2018, 13:45 11
Good_Y,
C++
1
2
3
string st;
// вместо строчки 30
st += (digit > 9) ? digit - 10 + 'A' : digit + '0';
Ну и потом все манипуляции с st...
0
0 / 0 / 0
Регистрация: 04.11.2018
Сообщений: 14
04.11.2018, 14:40  [ТС] 12
Байт, добавил такое в main
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int value, S;
 
    string str;
 
    cout << "Введите число: ";
    cin >> value;
    cout << "В какой системе счисления вывести? -> ";
    cin >> S;
    cout << endl;
 
    _itoa_s(value, str, S);
 
    cout << "Введённое число в " << S << "-тичной системе счисления (РЕАЛИЗОВАНО _ITOA_S):  " << str << endl;
 
    ITOA_J(value, S);
Ноо...
выдает такое : отсутствуют экземпляры перегруженная функция "_itoa_s", соответствующие списку аргументов
а в своей функции попытался записать и пересало работать адекватно

Добавлено через 34 секунды
внутри своей функции все работает спасибо
0
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
04.11.2018, 14:44 13
Для string эта функция не подходит.
0
0 / 0 / 0
Регистрация: 04.11.2018
Сообщений: 14
04.11.2018, 14:46  [ТС] 14
nmcf, а как тогда
0
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
04.11.2018, 14:49 15
Что ты пытаешься сделать-то? Используй обычный массив char.
В string можно преобразовать через stringstream, но только для 8, 10 и 16.
0
0 / 0 / 0
Регистрация: 04.11.2018
Сообщений: 14
04.11.2018, 14:57  [ТС] 16
nmcf, я уже писал пытаюсь сделать так чтобы не было
C++ (Qt)
1
char str[100]
с заранее заданным размером, а ВЫ мне усиленно пытаетесь доказать 15 возьми 50 возьми и тд
0
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
04.11.2018, 15:06 17
Good_Y,
вот у тебя есть цикл в строках 28-31. Выкинь непосредственно запись в строку и просто считай, какого размера массив тебе будет нужен.
0
0 / 0 / 0
Регистрация: 04.11.2018
Сообщений: 14
05.11.2018, 16:48  [ТС] 18
Я так делал в main чтобы определить размерность, но как потом записать чтобы функция itoa_s занесла в него значение
0
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
05.11.2018, 17:51 19
Цитата Сообщение от Good_Y Посмотреть сообщение
но как потом записать чтобы функция itoa_s занесла в него значение
Так, как сделано с стандартной функции - передать в кажестве аргумента.
0
Неэпический
18109 / 10696 / 2062
Регистрация: 27.09.2012
Сообщений: 26,933
Записей в блоге: 1
05.11.2018, 19:51 20
Реализовать функцию ItoA и сравнить со стандартной функцией
ltoa/itoa - нет такой стандартной функции.
1
05.11.2018, 19:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.11.2018, 19:51
Помогаю со студенческими работами здесь

Реализовать рекурсивную функцию вычисления многочленов Эрмита, и сравнить количество действий с нерекурсивной
Реалізувати рекурсивну функцiю для обчислення многочленiв Ермiта i порiвняти кількість дій у...

Какая dll содержит функцию itoa?
И &quot;_itoa_s&quot;. Интересует название динамической библиотеки dll для вызова LoadLibrary и в...

Как подключить функцию itoa (),atoi() в xcode
Здравствуйте, как подключить функцию itoa (),atoi() в xcode?

При попытке вычислить длину строки стандартной функцией strlen возникает ошибка
Есть код, в котором объявлена volatile-переменная c_buf, представляющая собой массив символов: ...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru