Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.52/54: Рейтинг темы: голосов - 54, средняя оценка - 4.52
Эксперт Java
378 / 370 / 114
Регистрация: 30.06.2010
Сообщений: 1,445

itoa. перевод числа в строку. реализуем вырезанную из стандарта функцию)))

27.02.2011, 18:48. Показов 10823. Ответов 38
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
доброе утор, день, вечер. нужна реализация itoa, у меня получилось следующее

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
char ito(int value)
    {
        int tmp_value = value;
        value /= 10;
        if (value) result[j]=ito(value);
        j++;
        int k=tmp_value-value*10;
        return ptr[k];
    }
char *itoa(int value) 
    {
        char *result="";
        char *ptr= "0123456789abcdef";
        int j=0;
        result=result+ito(value);
        return result;
    }
компилится. но вылетает на строке

C++
1
return ptr[k];
выскакиевает уведомление. ругается благим компиляторским матом:
Необработанное исключение типа "System.NullReferenceException" произошло в my bnf.exe

Дополнительные сведения: Ссылка на объект не указывает на экземпляр объекта.
пробовал по разному, выдает ошибки при компиляции

Добавлено через 5 минут
и еще, кто скажет, почему конкат срабатывает криво

C++
1
2
3
4
String^ s=richTextBox1->Lines[i];
String^ t=gcnew String(itoa(253));
String^ k=". ";
String^ h=String::Concat( t, k, s);
в итоге h=t

Добавлено через 6 минут
а если есть другие способы конвертирования числа в String ^ или в char *?)буду благодарен)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.02.2011, 18:48
Ответы с готовыми решениями:

Можно ли использовать функцию itoa без записи результата в строку?
Доброго времени суток всем!:) Возник такой вот нубский вопрос, но тем не менее. Можно ли использовать функцию itoa без записи...

Написать функцию itoa (n,s) преобразования целого числа n в стринг s
Написать функцию itoa (n,s) преобразования целого числа n в стринг s

Перевод стандарта С++
Добрый день, подскажите, пожалуйста, что такое "side effects"?

38
 Аватар для pavel876
2 / 4 / 0
Регистрация: 02.03.2011
Сообщений: 56
02.03.2011, 23:04
Студворк — интернет-сервис помощи студентам
ЭХ ВОТ ТАК
0
Эксперт Java
378 / 370 / 114
Регистрация: 30.06.2010
Сообщений: 1,445
02.03.2011, 23:05  [ТС]
pavel876, первый мессаг решил запостить сюда?)
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,878
02.03.2011, 23:07
завтра напишу простейшую реализацию стека
0
Эксперт Java
378 / 370 / 114
Регистрация: 30.06.2010
Сообщений: 1,445
02.03.2011, 23:09  [ТС]
ValeryS, ладно, с конструктором в таком случае понятно. а деструктор как вызываться будет?

Добавлено через 1 минуту
C++
1
~stack StackSymb;
как то так?
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,878
02.03.2011, 23:09
Цитата Сообщение от LeX BB Посмотреть сообщение
ммм) push - конструктор, pop - деструктор) интересная идея)
с какого перепугу
mystack() конструктор
~mystack() деструктор
0
Эксперт Java
378 / 370 / 114
Регистрация: 30.06.2010
Сообщений: 1,445
02.03.2011, 23:10  [ТС]
Цитата Сообщение от ValeryS Посмотреть сообщение
с какого перепугу
mystack() конструктор
~mystack() деструктор
описать внутри mystack() push, а внутри ~mystack() - pop?
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,878
02.03.2011, 23:14
Цитата Сообщение от LeX BB Посмотреть сообщение
ладно, с конструктором в таком случае понятно. а деструктор как вызываться будет
деструктор как и конструктор явно не вызываетсь
он вызывается при разрушении объекта
0
Эксперт Java
378 / 370 / 114
Регистрация: 30.06.2010
Сообщений: 1,445
02.03.2011, 23:18  [ТС]
Цитата Сообщение от ValeryS Посмотреть сообщение
деструктор как и конструктор явно не вызываетсь
он вызывается при разрушении объекта
т.е. получается как вариант реализации внутри структуры вышеописанным образом объявить push и pop, потом их вызывать?

это получается как то так?:
C++
1
2
StackSymb->push(c);
StackSymb->pop();
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,878
03.03.2011, 19:22
реализация стека через классы
Stack.h
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
#pragma once
 
// класс элемента стека
class CStack
{
public:
    CStack(void);      // конструктор
    ~CStack(void);     // деструктор
 
    CStack* pNext;
    int value;
 
 
};
// класс кадра стека
class CFrameStack
{
public:
    CFrameStack(void);   // конструктор 
    ~CFrameStack(void);  // деструктор
    bool IsEmpty(void);  // проверка Пустой ли стек
    int pop(void);
    void push(int v);
private:
   CStack *TopStack;      //указатель вершины стека
};
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
// Stack.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include "Stack.h"
 
 
 
CStack::CStack(void) // конструктор инициализирует  переменные
: pNext(NULL)
, value(0)
{
}
 
CStack::~CStack(void)
{
 
}
CFrameStack::CFrameStack(void)//конструктор инициализирует  переменные
:TopStack(NULL)
{
}
CFrameStack::~CFrameStack(void) //деструктор 
{
while(!IsEmpty())             // если стек не пуст 
     pop();                   // удаляем элементы
}
 
bool CFrameStack::IsEmpty(void)
{
    return (TopStack==NULL);   // проверка пустоты стека
}
 
int CFrameStack::pop(void)      // достать с вершины стека 
{
    if(IsEmpty()) return -1;    // если стек пуст выйти
    CStack * tmp=TopStack;      // выделяем элемент стека 
    TopStack=tmp->pNext;        // указатель на предыдущий элемент
    int res=tmp->value;         // значение 
    delete tmp;                 // удаляем элемент стека
    return res;                  // вернуть значение
    
}
 
void CFrameStack::push(int v)  // положить на вершину стека
{
    CStack * tmp1=new CStack;  // создать новый элемент
    tmp1->value=v;             // присвойть значение 
    tmp1->pNext=TopStack;     // указатель на старый элемента
    TopStack=tmp1;             //вершина стека новай элемент
    return ;
}
 
 
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    CFrameStack st;
  for(int i=0;i<10;i++)
    {
      printf("%d ",i);
      st.push(i);
    }
      printf("\n");  
     for(int i=0;i<10;i++)
     {
      printf("%d ",st.pop());
     } 
 
      return 0;
}
С уважением Валерий
1
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
03.03.2011, 20:22
Цитата Сообщение от ValeryS Посмотреть сообщение
деструктор как и конструктор явно не вызываетсь
Деструктор можно вызвать явно, ничего этому не мешает.
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,878
03.03.2011, 21:15
можно а зачем
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
03.03.2011, 21:20
Цитата Сообщение от ValeryS Посмотреть сообщение
можно а зачем
Это другой вопрос. Вы сказали, что деструктор явно не вызывается так же, как и конструктор, я это опроверг.
Я это написал потому, что конструктор ведь действительно явно вызвать нельзя (он вызывается один раз при создании объекта и больше никогда), а вот деструктор может вызвать и сам программист, причём несколько раз в разных местах (в некоторых случаях это, естественно, может привести к UB, но это не исключает того, что это сделать можно).
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,878
03.03.2011, 21:35
есть много друг Горацио на свете
человек переходит с паскаля зачем ему сейчас эти нюансы???
под тем что деструктор вызывается неявно я имел ввиду
C++
1
2
3
{
MyClass a // создается класс вызывается конструктор
} // переменная выходит из области видимости,разрушается деструктор мы не вызываем он вызывается сам
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
03.03.2011, 21:38
ValeryS, "вызывается неявно" и "явно не вызывается" - это как-бы разные вещи...
Лучше сразу научиться правильно, чем сначала запомнить неправильно, а потом переучиваться.
0
Эксперт Java
378 / 370 / 114
Регистрация: 30.06.2010
Сообщений: 1,445
05.03.2011, 23:02  [ТС]
и снова я тут. вернулся к этому делу.
Цитата Сообщение от ValeryS Посмотреть сообщение
реализация стека через классы
Stack.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class CStack
{
public:
    CStack(void);      // конструктор
    ~CStack(void);     // деструктор
 
    CStack* pNext;
    int value;
 
 
};
 
CStack::CStack(void) // конструктор инициализирует  переменные
: pNext(NULL)
, value(0)
{
}
ValeryS, у меня в конструкторе указатель и переменная не инициализируются со соответствующими значениями. мой код:

хидер:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class stack
{
public:
    stack(void);
    stack *prew;
    char ch;
};
class stacks
{
public:
    void pop();
    void push(char c);
    stack *StackSymb;
};
cpp:
C++
1
2
3
4
5
stack::stack(void)
    : prew(0)
    , ch('>')
{
}
как быть, не посоветуете?

Добавлено через 4 минуты
да, и NULL упорно признавать не хочет. поэтому 0 ставлю

Добавлено через 4 часа 43 минуты
ValeryS, так получается надо все функции, работающие с указанным классом, её переменными, включать в класс?
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,878
07.03.2011, 21:22
ValeryS, у меня в конструкторе указатель и переменная не инициализируются со соответствующими значениями
какой компилятор???
можно и так
C++
1
2
3
4
5
6
CStack::CStack(void) // конструктор инициализирует  переменные
 
{
pNext=NULL;
 value=0;
}
инициализацию через конструкторы
могут не поддерживать старые компиляторы (????)
да, и NULL упорно признавать не хочет. поэтому 0 ставлю
какие h файлы подключены ?
так получается надо все функции, работающие с указанным классом, её переменными, включать в класс?
да
в классе должны быть необходимые ему переменные и функции(методы)
если ты будешь работать с данными(переменными) класса сторонними функциями значит класс спроектирован не правильно, этим ты нарушаешь идеологию ООП
смотри
C++
1
2
3
4
5
6
7
class man
{
public:
int age;
}
man Buba;
Buba.age=-200;// я ввел нереальный возраст, потому что имею доступ к данным класса
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class man
{
private:
int age; // никто снаружи сюда не достучится
public:
void SetAge(int a);      // функции обертки позволяют задать/считать возраст
int GetAge(){return age;};
}
void man.SetAge(int a)
{
  if((a<0)||(a>100))     // проверяем чтобы возраст был реальным
             return ;
 age=a;
}
man Buba;
Buba.age=-200;// компилятор даст ошибку
Buba.SetAge(-200);// не выполнится нереальный возраст
Buba.SetAge(25); // усе путем
Добавлено через 2 минуты
void man.SetAge(int a)
пардон
void man::SetAge(int a)
0
Эксперт Java
378 / 370 / 114
Регистрация: 30.06.2010
Сообщений: 1,445
09.03.2011, 15:53  [ТС]
ValeryS, компилятор vs2010.
подключенные хидеры:
C++
1
2
3
4
5
6
#include "stdafx.h"
#include <string.h>
#include <math.h>
#include <ymath.h>
#include "my systems.h"
#include <stdio.h>
спасибо)с классами разобрался, все нужные функции описал и запихнул, все работает

а это еще попробую, может получится.
Цитата Сообщение от ValeryS Посмотреть сообщение
какой компилятор???
можно и так
C++
1
2
3
4
5
6
CStack::CStack(void) // конструктор инициализирует  переменные
 
{
pNext=NULL;
 value=0;
}
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,878
09.03.2011, 16:13
странно
stdio.h
/* Define NULL pointer value */
#ifndef NULL
#ifdef __cplusplus
#define NULL 0
#else
#define NULL ((void *)0)
#endif
#endif
0
Эксперт Java
378 / 370 / 114
Регистрация: 30.06.2010
Сообщений: 1,445
09.03.2011, 16:27  [ТС]
Цитата Сообщение от ValeryS Посмотреть сообщение
странно
stdio.h
да и черт с ним)и без константы 0 прокатывает)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.03.2011, 16:27

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

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

Реализовать функцию ItoA и сравнить со стандартной функцией
Здравствуйте, передо мной стоит задача реализовать функцию ItoA и сравнить со стандартной функцией Реализую так , но стоит также задача...

1. простые числа в массиве 2. перевод числа в строку
Здравствуйте. очень нужна помощь по программированию 1. удалить простые числа из массива у меня получилось вот так: a: array...

Перевод числа в строку
Подскажите пожалуйста API-функцию перевода числа в строку, если таковая есть. Или альтернативу.Заранее благодарен.


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

Или воспользуйтесь поиском по форуму:
39
Ответ Создать тему
Новые блоги и статьи
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки. Добавлены следующие реквизиты типа Булево: - Буквы; - Цифры; - Символы. Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей. Самым главным критерием для. . .
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store. И так: 1. Скачиваем с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru