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

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

27.02.2011, 18:48. Показов 10369. Ответов 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
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
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
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
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
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
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
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
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
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
03.03.2011, 21:15
можно а зачем
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
03.03.2011, 21:20
Цитата Сообщение от ValeryS Посмотреть сообщение
можно а зачем
Это другой вопрос. Вы сказали, что деструктор явно не вызывается так же, как и конструктор, я это опроверг.
Я это написал потому, что конструктор ведь действительно явно вызвать нельзя (он вызывается один раз при создании объекта и больше никогда), а вот деструктор может вызвать и сам программист, причём несколько раз в разных местах (в некоторых случаях это, естественно, может привести к UB, но это не исключает того, что это сделать можно).
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
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
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
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
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
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
Ответ Создать тему
Новые блоги и статьи
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru