powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Функция типа char.Возвращаемые значения
21 сообщений из 21, страница 1 из 1
Функция типа char.Возвращаемые значения
    #34148562
Фотография Катька
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(Сразу говорю, что на си++ почти не работаю, так что от комментариев по поводу стиля написания прошу воздержаться =) )
Пишу программу перевода из десятичного в 16-ое... Но уже на стадии разработки алгоритма столкнулась с проблемой...
Код: plaintext
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.
int main()
{  unsigned int A;
   char *HEX1;
       char *Str1="ВВедите десятичное число:";
       ::CharToOem(Str1,Str1);
       cout<<Str1<<'\n';
       cin >> A;
       cout<<DecToHex(A)<<'\n';
       getch();
 return  0 ;
}
char *DecToHex(unsigned int A)
 {
char *HEX;

 if(A> 15 )
 { //;
 }
 else
        if(A< 10 )
        *HEX=A;
        else
        switch(A)
        {
        case  10 : *HEX='A';break;
        case  11 : *HEX='B';break;
        case  12 : *HEX='C';break;
        case  13 : *HEX='D';break;
        case  14 : *HEX='E';break;
        }
 return HEX;
 }
при запуске (пока ввожу числа до 15), ответ получается например при вводе 10 => A?9
затем консоль зависает, вызывается исключение EAccessViolation
Помогите справиться с проблемой!!! Буду очень благодарна!
...
Рейтинг: 0 / 0
Функция типа char.Возвращаемые значения
    #34148569
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Солнце! На стадии тестирования твоего алгоритма, обнаружилось, что он ваапще не предназначен для перевода чисел более 15. С чем и поздравляю.

P.S Не могла фотку поменьше поставить! У меня-ж модем ёлки-палки

P.P.S К стилю я не придрался!
...
Рейтинг: 0 / 0
Функция типа char.Возвращаемые значения
    #34148570
Фотография Катька
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
с 10-15 числами я поняла почему так, тк я ковычки одинарные поставила а надо было двойные, а как теперь правильно привести unsigned int к char (((
Код: plaintext
1.
2.
if(A< 10 )
    *HEX=A;
при вводе чисел от 0 до 9 :
то же самое только он не выводит даже значения, а только " ?9 "
...
Рейтинг: 0 / 0
Функция типа char.Возвращаемые значения
    #34148571
Фотография Катька
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonСолнце! На стадии тестирования твоего алгоритма, обнаружилось, что он ваапще не предназначен для перевода чисел более 15. С чем и поздравляю.

P.S Не могла фотку поменьше поставить! У меня-ж модем ёлки-палки

P.P.S К стилю я не придрался!

Эту фотку пора убрать уже...
это он пока не предназначен, я его еще допишу, я только начала, а ночь еще впереди)
...
Рейтинг: 0 / 0
Функция типа char.Возвращаемые значения
    #34148585
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Оххх! Катерина! Значит слушай. Программу твою мне смотреть, честно говоря не интересно. Потому-что ты превысила допустимый лимит ошибок на 1 килобайт исходного кода. Я вообще удивляюсь, как она у тебя работает.

Значит так. Я хочу увидеть формулировку твоего задания в исходном виде (первый вопрос). Это определит, что тебе нужно писать, как писать и с использованием чего писать. В скобках замечу, что для перевода систем счисления С++ имеет готовые функции. И посему интерес к написанию подобный вещей есть только у новичков изучающих ... ээ.. а что ты изучаешь? (это второй вопрос).

Жду ответа...

C уважением
Lord Mayton
...
Рейтинг: 0 / 0
Функция типа char.Возвращаемые значения
    #34148588
Фотография Катька
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonОххх! Катерина! Значит слушай. Программу твою мне смотреть, честно говоря не интересно. Потому-что ты превысила допустимый лимит ошибок на 1 килобайт исходного кода. Я вообще удивляюсь, как она у тебя работает.

Значит так. Я хочу увидеть формулировку твоего задания в исходном виде (первый вопрос). Это определит, что тебе нужно писать, как писать и с использованием чего писать. В скобках замечу, что для перевода систем счисления С++ имеет готовые функции. И посему интерес к написанию подобный вещей есть только у новичков изучающих ... ээ.. а что ты изучаешь? (это второй вопрос).

Жду ответа...

C уважением
Lord Mayton

Задание, преобразовать десятичное в 16-ти ричное. Число вводится с клавиатуры. Работаю в билдере 6... Если есть стандартные функции - это замечательно, я бы ей воспользовалась, если бы знала))
...
Рейтинг: 0 / 0
Функция типа char.Возвращаемые значения
    #34148590
Фотография Катька
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton... ээ.. а что ты изучаешь? (это второй вопрос).

изучаю.. гм... технология программирования))))
...
Рейтинг: 0 / 0
Функция типа char.Возвращаемые значения
    #34148599
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну.. в первом приближении где-то так.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
#include <iostream.h>
#include <stdio.h>

int main()
{  	
	unsigned int A;

	// min= 0 , max= 4294967295 

	cin >> A;

	printf("%X",A);

        return  0 ;

}

Стандартная функция - printf(...) . Она выводит на экран целочисленный тип данных в различных системах счисления. Если нужно выводить не на экран а в строку, надо воспользоватся функцией sprintf(...) .


C уважением
Lord Mayton
...
Рейтинг: 0 / 0
Функция типа char.Возвращаемые значения
    #34148604
Фотография Катька
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonНу.. в первом приближении где-то так.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
#include <iostream.h>
#include <stdio.h>

int main()
{  	
	unsigned int A;

	// min= 0 , max= 4294967295 

	cin >> A;

	printf("%X",A);

        return  0 ;

}

Стандартная функция - printf(...) . Она выводит на экран целочисленный тип данных в различных системах счисления. Если нужно выводить не на экран а в строку, надо воспользоватся функцией sprintf(...) .


C уважением
Lord Mayton

Вау!!! РАБОТАЕТ!!!!!!! УРа!! УрА!!! Тысяча благодарностей!!!!!!!!! Даже и не знаю, что сказать))) Я пару часов провозилась, а оказалось все так просто (но все равно я бы до такого не додумалась)))))))
...
Рейтинг: 0 / 0
Функция типа char.Возвращаемые значения
    #34148608
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пустяки!

А новая фотка - лучше.

C уважением
Lord Mayton
...
Рейтинг: 0 / 0
Функция типа char.Возвращаемые значения
    #34148610
Фотография Катька
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonПустяки!

А новая фотка - лучше.

C уважением
Lord Mayton

Правда я сама хотела написать программу преобразования (без использования стандартных функций) ))) ну это уже неважно, может на досуге займусь))) :D
...
Рейтинг: 0 / 0
Функция типа char.Возвращаемые значения
    #34148712
Катька maytonПустяки!

А новая фотка - лучше.

C уважением
Lord Mayton

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

Для случая перевода из 10-ой в 16-ричную это будет так:
автор1. Исходное число делим на 16 с остатком. Получаем частное и остаток. Остаток преобразуем в 16-ричную систему счисления. Это будет самая "правая" цифра
2. Частное снова делим на 16 с остатком. Остаток преобразуем в 16-ричную систему счисления. Это будет следующая цифра "справа"
3. Повторяем п.2 пока частное больше 16. Если частное меньше 16, то преобразуем его в 16-ричную систему. Эта цифра будет самой "левой" в результате.


Рассмотрим алгоритм на примере.
автор
Пусть имеем число 300 (триста) в десятичной системе счисления. Переведем его в 16-ричную.

1. 300:16=18; остаток = 12, переводим его в 16-ричную систему, получаем С
2. 18:16=1; остаток = 2, переводим в 16-ричную систему счисления, получаем 2
3. 1 < 16 - деление прекращаем, преобразуем 1 в 16-ричную систему счисления, получаем 1

В итоге получаем:300 (десятичное) = 12С (шестнадцатиричное)...


Точно такой же алгоритм и для перевода в двоичную систему счисления. Только там делить надо на 2

Что касается твоей программы, то:
1. забыла приписать следующую ветку:
Код: plaintext
1.
        case  15 : *HEX='F';break;
2. Возвращаемое значение объявлено как char *, а память-то под массив символов нигде не выделяется... Неудивительно, что программа ведет себя неадекватно и виснет...
...
Рейтинг: 0 / 0
Функция типа char.Возвращаемые значения
    #34149284
Фотография sashka304
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а в билдере есть такая замечательная функция как
Код: plaintext
1.
 AnsiString __fastcall IntToHex(int Value, int Digits);
берешь ее и никаких проблем :)
...
Рейтинг: 0 / 0
Функция типа char.Возвращаемые значения
    #34165362
Фотография Катька
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Станислав С Катька maytonПустяки!

А новая фотка - лучше.

C уважением
Lord Mayton

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

Для случая перевода из 10-ой в 16-ричную это будет так:
автор1. Исходное число делим на 16 с остатком. Получаем частное и остаток. Остаток преобразуем в 16-ричную систему счисления. Это будет самая "правая" цифра
2. Частное снова делим на 16 с остатком. Остаток преобразуем в 16-ричную систему счисления. Это будет следующая цифра "справа"
3. Повторяем п.2 пока частное больше 16. Если частное меньше 16, то преобразуем его в 16-ричную систему. Эта цифра будет самой "левой" в результате.


Рассмотрим алгоритм на примере.
автор
Пусть имеем число 300 (триста) в десятичной системе счисления. Переведем его в 16-ричную.

1. 300:16=18; остаток = 12, переводим его в 16-ричную систему, получаем С
2. 18:16=1; остаток = 2, переводим в 16-ричную систему счисления, получаем 2
3. 1 < 16 - деление прекращаем, преобразуем 1 в 16-ричную систему счисления, получаем 1

В итоге получаем:300 (десятичное) = 12С (шестнадцатиричное)...


Точно такой же алгоритм и для перевода в двоичную систему счисления. Только там делить надо на 2

Что касается твоей программы, то:
1. забыла приписать следующую ветку:
Код: plaintext
1.
        case  15 : *HEX='F';break;
2. Возвращаемое значение объявлено как char *, а память-то под массив символов нигде не выделяется... Неудивительно, что программа ведет себя неадекватно и виснет...

гм)) спасибо))
Как переводить из 10 в 16-ую систему я знаю (учеба не позволяет не знать этого) ^_^
...
Рейтинг: 0 / 0
Функция типа char.Возвращаемые значения
    #34165366
Фотография Катька
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sashka304а в билдере есть такая замечательная функция как
Код: plaintext
1.
 AnsiString __fastcall IntToHex(int Value, int Digits);
берешь ее и никаких проблем :)
а где она лежит, в какой библиотеке? я просто писала так (от Delphi в памяти осталось), но что-то не получалось...
...
Рейтинг: 0 / 0
Функция типа char.Возвращаемые значения
    #34165625
M.Alex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Катька - лохушка
...
Рейтинг: 0 / 0
Функция типа char.Возвращаемые значения
    #34165628
M.Alex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извини, не воздержался )))
...
Рейтинг: 0 / 0
Функция типа char.Возвращаемые значения
    #34165711
Фотография sashka304
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а где она лежит, в какой библиотеке? я просто писала так (от Delphi в памяти осталось), но что-то не получалось...
ну вроде это была VCL ф-я,
#include <vcl.h>
а потом ее юзаешь и все у тебя цветет и пахнет
а в хелпе пишут про нее так:
Converts a number into a string containing the number's hexadecimal (base 16) representation.
static AnsiString __fastcall IntToHex(int value, int digits);
Description
Value is the number to convert. Digits indicates the minimum number of hexadecimal digits.
...
Рейтинг: 0 / 0
Функция типа char.Возвращаемые значения
    #34165822
muk07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
char *DecToHex(unsigned int A)
 {
char *HEX;

 if(A> 15 )
 { //;
 }
 else
        if(A< 10 )
        *HEX=A;
        else
        switch(A)
        {
        case  10 : *HEX='A';break;
        case  11 : *HEX='B';break;
        case  12 : *HEX='C';break;
        case  13 : *HEX='D';break;
        case  14 : *HEX='E';break;
        }
 return HEX;
 }
А кто даст память под HEX?
HEX=new char;
Непонятно почему не было access violation
...
Рейтинг: 0 / 0
Функция типа char.Возвращаемые значения
    #34268579
А я вот так поизвращался
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
unsigned char StrToHex(AnsiString Str)
{
        int FirstSymbol,SecondSymbol;
        AnsiString Symbol1,Symbol2;
        AnsiString HEX[ 16 ] = {"0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"};
        Symbol1 = Str.SubString( 1 , 1 );
        Symbol2 =Str.SubString( 2 , 2 );
        for(int d= 0 ;d< 16 ;d++)
                {
                if (HEX[d]==Symbol1)    FirstSymbol = d;
                if (HEX[d]==Symbol2)    SecondSymbol = d;
                }

        return char(FirstSymbol* 16 +SecondSymbol);
}
...
Рейтинг: 0 / 0
Функция типа char.Возвращаемые значения
    #34268679
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
извгашенец пишет:
> for(int d=*0*;d<*16*;d++)
> {
> if (HEX[d]==Symbol1) FirstSymbol = d;
> if (HEX[d]==Symbol2) SecondSymbol = d;
> }

Вообще-то это без циклов всяких пишется.
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Функция типа char.Возвращаемые значения
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]