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

это элементарно, но я н е понимаю) - C++

Восстановить пароль Регистрация
 
Егорка47
7 / 6 / 1
Регистрация: 26.10.2010
Сообщений: 249
22.12.2010, 16:33     это элементарно, но я н е понимаю) #1
ребят,уже целую неделю мне никто не может помочь даже с элементарными функциями!
мне надо до завтра разобраться с лабой!помогите пожалуйста,будьте добры!
вот функция:

C++
1
2
3
4
5
6
bool check_signs(char a,char *signs)
{ int i;
for (i=0;i<strlen(signs);i++){
        if(a==signs[i]) // сравниваем а с итым элементом строки "signs"? зачем?что это значит?
        return false;}
    return true;
что она делает??проверка знаков?каким образом,можете объяснить?)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.12.2010, 16:33     это элементарно, но я н е понимаю)
Посмотрите здесь:

this это адресс объекта, а *this это сам объект. я всё правельно понял? C++
C++ как соединить b и с в число, если а это число, б это десятки перевернутого числа, с это единицы перевернутого числа вот в это строчке c=a+b,c;
C++ Элементарно. Но ошибку найти не могу. Вывод имени "Jim" на экран
C++ о функциях (элементарно, но я же нуб)
Факториал! Для кого-то это легко, а кто-то вообще это не знает! C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
NNN777
299 / 157 / 19
Регистрация: 27.02.2010
Сообщений: 317
22.12.2010, 16:44     это элементарно, но я н е понимаю) #2
C++
1
2
3
4
5
6
7
8
9
bool check_signs(char a,char *signs) //функция, возвращающая булевое значение, 
//принимает в кач-ве параметров char a - символ а типа char, char *signs  - указатель на начало массива
{ int i;
for (i=0;i<strlen(signs);i++) //от 0 до конца массива signs
{
                if(a==signs[i]) // если полученный в кач-ве параметров символ а совпал с i-тым элементом массива signs
                return false;} //возвращаем false, выходим из функции
        return true; //возвращаем true, если прошел весь цикл от 0 до 
        //конца массива signs и символ а ни разу не встретился в массиве signs
Егорка47
7 / 6 / 1
Регистрация: 26.10.2010
Сообщений: 249
22.12.2010, 16:46  [ТС]     это элементарно, но я н е понимаю) #3
NNN777, спасибо тебе огромное,ты откликнулся на мои молитвы
можешь еще кое что подсказать: что значит булевое значение?
XuTPbIu_MuHTAu
Эксперт C++
 Аватар для XuTPbIu_MuHTAu
2219 / 734 / 10
Регистрация: 27.05.2008
Сообщений: 1,507
22.12.2010, 16:46     это элементарно, но я н е понимаю) #4
если в строке signs есть символ a, возвращает false. В противном случае true.
Егорка47
7 / 6 / 1
Регистрация: 26.10.2010
Сообщений: 249
22.12.2010, 16:59  [ТС]     это элементарно, но я н е понимаю) #5
я понял,спасибо)
можете теперь подсказать разницу в этих 2 функциях?)


C++
1
2
3
4
5
6
7
8
int* arr (int count)
{int *p,i;
    p=(int*)malloc(count*sizeof(int));
    srand((unsigned)time(NULL));
    for(i=0;i<count;i++)
        p[i]=rand();
    return p;
}
и

C++
1
2
3
4
5
void  arr2 (int count,int **p) // <---
{int i;
    *p=(int*)malloc(count*sizeof(int));
    for(i=0;i<count;i++)
        (*p)[i]=rand();}
это две функции которые заполняют массив псевдослучайными числами)
почему во второй мы используем указатель на указатель**р?почему нельзя просто указатель *р??
и можете так же прокомментировать 2 функцию)
XuTPbIu_MuHTAu
Эксперт C++
 Аватар для XuTPbIu_MuHTAu
2219 / 734 / 10
Регистрация: 27.05.2008
Сообщений: 1,507
22.12.2010, 17:06     это элементарно, но я н е понимаю) #6
Егорка47, первая функция возвращает указатель,вторая модифицирует существующий.
вызов первой выглядит так

int * p = arr(10);

второй - так

int *p;
arr(10,&p);
Егорка47
7 / 6 / 1
Регистрация: 26.10.2010
Сообщений: 249
22.12.2010, 17:22  [ТС]     это элементарно, но я н е понимаю) #7
длинный, я с первого раза понимаю)

Добавлено через 2 минуты
Цитата Сообщение от XuTPbIu_MuHTAu Посмотреть сообщение
Егорка47, первая функция возвращает указатель,вторая модифицирует существующий.
вызов первой выглядит так

int * p = arr(10);

второй - так

int *p;
arr(10,&p);
не совсем понятный ответ)для меня..

Добавлено через 1 минуту
точнее я понял про вызов. но я не понял почему 2 звездочки!)
Егорка47
7 / 6 / 1
Регистрация: 26.10.2010
Сообщений: 249
22.12.2010, 18:26  [ТС]     это элементарно, но я н е понимаю) #8
что не правильно?вы написали тоже самое что и NNN777!
то есть скопировали его комментарии и вставили в свой ответ)
или я не заметил какую то разницу?!
Егорка47
7 / 6 / 1
Регистрация: 26.10.2010
Сообщений: 249
22.12.2010, 20:05  [ТС]     это элементарно, но я н е понимаю) #9
так что,кто нибудь может объяснить почему мы пишем **р???

C#
1
2
3
4
5
6
7
int* arr (int count)
{int *p,i;
 p=(int*)malloc(count*sizeof(int));// <<-----
 srand((unsigned)time(NULL));
 for(i=0;i<count;i++)
 p[i]=rand();
 return p;
что значит эта строка?? srand((unsigned)time(NULL));????
j245
0 / 0 / 0
Регистрация: 17.11.2010
Сообщений: 36
22.12.2010, 20:52     это элементарно, но я н е понимаю) #10
длинный,

ты идиот?

Добавлено через 59 секунд
Егорка47,

srand((unsigned)time(NULL)) это рандомайзер же
XuTPbIu_MuHTAu
Эксперт C++
 Аватар для XuTPbIu_MuHTAu
2219 / 734 / 10
Регистрация: 27.05.2008
Сообщений: 1,507
22.12.2010, 20:54     это элементарно, но я н е понимаю) #11
Егорка47, На переменную типа int* - указатель на int - можно тоже объявить указатель. Тип его будет "Указатель на указатель на int" или int**.

Здесь,в функцию передается адрес указателя, и по этому адресу записывается адрес начала массива,который получается вызовом malloc
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.12.2010, 21:03     это элементарно, но я н е понимаю)
Еще ссылки по теме:

C++ знаю что элементарно, но я пока не очень в с++ разбираюсь(
Связанный список. Как это делается и зачем это нужно? C++
C++ Рекурсивная функция элементарно

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

Или воспользуйтесь поиском по форуму:
Егорка47
7 / 6 / 1
Регистрация: 26.10.2010
Сообщений: 249
22.12.2010, 21:03  [ТС]     это элементарно, но я н е понимаю) #12
я это понимаю!)
вот у меня препод спрашивает почему тут стоит указатель на указатель а не просто указатель на р?
что мне отвечать?

i
C++
1
2
3
4
5
6
7
nt* arr (int count)
{int *p,i;
    p=(int*)malloc(count*sizeof(int));
    srand((unsigned)time(NULL));
    for(i=0;i<count;i++)
        p[i]=rand();
    return p;
}

void arr2 (int count,int **p)
{int i;
*p=(int*)malloc(count*sizeof(int));
for(i=0;i<count;i++)
(*p)[i]=rand();}

и в чем разница этих функций?
Yandex
Объявления
22.12.2010, 21:03     это элементарно, но я н е понимаю)
Ответ Создать тему
Опции темы

Текущее время: 01:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru