Форум программистов, компьютерный форум CyberForum.ru

Функции и указатели - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как узнать знак числа? http://www.cyberforum.ru/cpp-beginners/thread311978.html
как узнать знак числа для float или double. пишу в win32.
C++ STL set вопрос почему в строке while( (*ii)!=elem) говорит что я не перегрузил != не могу понять, и почему в строке cout<<*p<<" "; говорит что я не перегрузил вывод для моего класса ?? Подскажите кто то, оч прошу, я сравниваю пока для простоты по интовой переменной класса, и приходится пользоваться функцией лук, прописанной в классе , с типом инт9если сделать 1 переменную в классе все работает... ... http://www.cyberforum.ru/cpp-beginners/thread311890.html
C++ Как подключить свой модуль
Используйте теги форматирования кода! Добавлено через 5 часов 20 минут Здравствуйте ,скажите как правильно подключить модуль в Си++. Файл rectangel.cpp выглядит так: /* Модуль содержит описание клсса TRect - прямоугольник. 1. Используя этот модуль, написать программу, изображающую на экране мигающий прямоугольник. Изменить модуль, объявив часть полей личными.
Возрастающая последовательность C++
Народ помогите написать прогу на Си. Даны вещественные числа. определить образуют ли они возрастающую последовательность. если да - то найти сумму первого и последнего элементов а если нет то найти произведение максимального и минимального элеменов.
C++ переделать программу http://www.cyberforum.ru/cpp-beginners/thread311869.html
дан код , результатом которого является бегающий человечек под дождем, прошу переделать этот код так чтобы дождя не было, был лишь только бегающий человечек, прошу помочь, нужно срочно, на с\c++ #include<iostream.h> #include<graphics.h> #include<conio.h> #include<dos.h> #include<stdlib.h> int sineGen(int cntr) {
C++ Книги по С++ Доброго времени суток!!!Задался целью тщательно изучить С++. Посоветуйте пожалуйста хорошие книги и учебники для изучения этого могучего языка :)Заранее спасибо :) З.Ы. А как вы изучали язык?Поделись опытом :) подробнее

Показать сообщение отдельно
diagon
Higher
1927 / 1193 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
04.06.2011, 14:20  [ТС]     Функции и указатели
Блин, вроде проверял, а ошибка была глупой...
C++
1
2
3
4
5
6
7
8
9
10
char * itoa(int num,char * str,int base){ 
    char * res=str;
    bool _=false;
    if (num < 0) {_=true; num*=-1;}
    for(;num;num/=base)
        *str++=num%base+48;
    if (_) *str++='-';
    *str=0;
    return str_cpy(res,str_rev(res));
}
Вот так почти работает, только нуль почему то не хочет.
Ошибка, как я понял, была в том, что я возвращал указатель на конец строки. Теперь возвращается указатель на начало

Добавлено через 7 минут
Теперь работает и с нулем
C++
1
2
3
4
5
6
7
8
9
10
11
char * itoa(int num,char * str,int base){ 
    char * res=str;
    if (!num) {*str++=48; *str=0; return res;}  //за счет этой строки
    bool _=false;
    if (num < 0) {_=true; num*=-1;}
    for(;num;num/=base) //если num=0, то цикл ни разу не выполнится 
        *str++=num%base+48;
    if (_) *str++='-';
    *str=0;
    return str_cpy(res,str_rev(res));
}
Добавлено через 1 час 53 минуты
Переделал atoi, теперь работает с восьмеричной, десятичной, и шестнадцатеричной системой счисления. Вот код, возможно понадобится кому-нибудь=)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int atoi(const char * str){
    int base,res=0;
    bool _=false;
    if (*str=='-') {*str++; _=true;}
    if (*str==48){
        *str++;
        switch(*str){
            case 0:return 0;
            case 'x':base=16; *str++; break;
            default:base=8;
        }
    }
    else base=10;
    char x=(base==16)?'7':'0';
    for(;*str;res+=(*str++-x))
        res*=base;
    return (_)?-res:res;
}
----------------------------------------------------------------------------------------------------------------------
И на последок 2 небольших вопроса.
1)
const char * - это ведь указатель на константу, а не константный указатель на char?
В таком случае, почему нельзя сделать так
C++
1
2
3
void func(const char * str){
    char * ptr=str;  //error
}
2)
C++
1
2
3
4
void func(const char * str){
    *str++;
    ++*str; //error
}
Почему ошибка? Постфиксный инкремент есть, а префиксного нету? о_О
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru