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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Demon55
1 / 1 / 0
Регистрация: 29.11.2013
Сообщений: 46
#1

Объясните функцию? - C++

05.12.2013, 13:57. Просмотров 248. Ответов 7
Метки нет (Все метки)

Нужно объяснить и написать вызов функции.
Функция связана со строками, но что делает не пойму.
C++
1
2
3
4
5
6
7
8
9
int F(char *p){
int n;
if (*p=='\0') return 0;
if (*p!=' ') n=1;
else n=0;
for (p++; *p!='\0'; p++)
    if (p[0]!=' '&&p[-1]==' ') n++;
return n;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.12.2013, 13:57     Объясните функцию?
Посмотрите здесь:

Объясните функцию strtok - C++
расскажите алгоритм void prv(char*a) char* cr = 0; cr = strtok((a)?a:0," "); if(!cr) return; prv(0); cout << cr <<...

Объясните функцию отрисовки графики - C++
Объясните пожалуйста,что происходить в части кода void drawT? #include <windows.h> #include <gl/glut.h> void reshape(int w,...

Объясните данный алгоритм/функцию - C++
http://rabus.ru/mc/methodOfCoord.html#prim_1 Собственно каким образом это должно происходить? Как вообще и на основании чего это...

Объясните, как передать данные в функцию - C++
правильно ли я вызвал функцию? И почему когда запускаю программу она ничего не показывает(может это связано с тем что данных так таковых...

Объясните функцию классы в С++ и укажите мою ошибку. - C++
Изучаю классы в языке C++, написав несколько строк кода для вывода числа. не могу понять и исправить ошибку, вот код: #include<iostream> ...

Объясните словесно плиз одну функцию небольшую - C++
bool IsEven(int val) { bool valIsEven = val%2 ? false : true; return valIsEven; } Люди не могу понять словесно как функия...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dzrkot
zzzZZZ...
518 / 348 / 53
Регистрация: 11.09.2013
Сообщений: 1,995
05.12.2013, 14:02     Объясните функцию? #2
Цитата Сообщение от Demon55 Посмотреть сообщение
Нужно объяснить и написать вызов функции.
Функция связана со строками, но что делает не пойму.
C++
1
2
3
4
5
6
7
8
9
int F(char *p){
int n;
if (*p=='\0') return 0;
if (*p!=' ') n=1;
else n=0;
for (p++; *p!='\0'; p++)
    if (p[0]!=' '&&p[-1]==' ') n++;
return n;
}
считает кол-во слов в строке походу
Demon55
1 / 1 / 0
Регистрация: 29.11.2013
Сообщений: 46
05.12.2013, 14:05  [ТС]     Объясните функцию? #3
Хм а как правильно вызвать ф-цию?

Ибо если я введу строку так:
C++
1
2
cout<<"Введите строку"; 
scanf_s("%s", &s, 100);
Считает только 1 слово.
bradobrei
Продам уран 238U
119 / 119 / 23
Регистрация: 22.01.2013
Сообщений: 298
05.12.2013, 14:10     Объясните функцию? #4
Эта функция получает на вход строку символов и считает символы отличные от пробела.
Скорее всего не рабочая , из-за этото участка
C++
1
2
for (p++; *p!='\0'; p++)
    if (p[0]!=' '&&p[-1]==' ') n++;
не знаю можно ли цикл так состовлять!
и в if ссылается на -1 элемент, что не комельфо
dzrkot
zzzZZZ...
518 / 348 / 53
Регистрация: 11.09.2013
Сообщений: 1,995
05.12.2013, 14:14     Объясните функцию? #5
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
#include <iostream>
 
using namespace std;
 
int F(const char *p)
{
int n;
if (*p=='\0') return 0;
if (*p!=' ') n=1;
else n=0;
for (p++; *p!='\0'; p++)
    if (p[0]!=' '&&p[-1]==' ') n++;
return n;
}
int main()
{
    int x;
    x=F ("Hello asd 3 world!");
 
    string a;
    cout<<"Enter string"<<endl;
    getline(cin,a);
    x=F(a.c_str());
    cout<<a<<endl;
    cout<<x;
    return 0;
}
можно так

Добавлено через 1 минуту
Цитата Сообщение от bradobrei Посмотреть сообщение
Эта функция получает на вход строку символов и считает символы отличные от пробела.
Скорее всего не рабочая , из-за этото участка
C++
1
2
for (p++; *p!='\0'; p++)
    if (p[0]!=' '&&p[-1]==' ') n++;
не знаю можно ли цикл так состовлять!
и в if ссылается на -1 элемент, что не комельфо
тоже не понял этого, итерируется р 2 раза и [0] [-1] , но компилируется тем не менее)
наверное р++ 1ый раз просто сдвигаем с [0] чтобы можно было сделать [-1] , а потом уже [0] и [-1] читает текущее положение (которое здадается в for 2ой р++) и предыдущее
ValeryS
Модератор
6542 / 5008 / 461
Регистрация: 14.02.2011
Сообщений: 16,656
05.12.2013, 14:22     Объясните функцию? #6
Цитата Сообщение от bradobrei Посмотреть сообщение
Эта функция получает на вход строку символов и считает символы отличные от пробела.
фиг вам
она считает только когда предыдущий символ пробел а текущий не пробел
Цитата Сообщение от Demon55 Посмотреть сообщение
if (p[0]!=' '&&p[-1]==' ') n++;
следовательно считает количество слов
Цитата Сообщение от bradobrei Посмотреть сообщение
Скорее всего не рабочая , из-за этото участка
до этого указатель увеличивается на 1 значит не может выйти за пределы строки
Demon55
1 / 1 / 0
Регистрация: 29.11.2013
Сообщений: 46
06.12.2013, 11:38  [ТС]     Объясните функцию? #7
А для чего вот эти строки?
C++
1
2
x=F ("Hello asd 3 world!");
    x=F(a.c_str());
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.12.2013, 11:47     Объясните функцию?
Еще ссылки по теме:

Написать функцию, которая, в зависимости от выбора пользователя вызывает соответствующую функцию - C++
Помогите, что то я не могу понять задачи, даже не знаю с чего начать)))) 5. Написать функцию, которая, в зависимости от выбора...

рекурсия.написать функцию,принимающую указ. на другую функцию, осуществл. некую операцию с переданным х - C++
рекурсия.написать функцию,принимающую указ. на другую функцию, осуществл. некую операцию с переданным х. прога должна иметь вид...

Разработать программу, которая содержит функцию замены местами первого и последнего столбцов матрицы и функцию - C++
Разработать программу, которая содержит функцию замены местами первого и последнего столбцов матрицы и функцию,которая, первый...

Зачем передавать в функцию X указатель на callback функцию, если последняя ВНЕШНЯЯ и вызовется БЕЗО ВСЯКОГО УКАЗАТЕЛЯ? - C++
Собсно. То есть ребята, вот пример отсюда: http://www.cplusplus.com/reference/algorithm/count_if/ // count_if example #include...


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

Или воспользуйтесь поиском по форуму:
dzrkot
zzzZZZ...
518 / 348 / 53
Регистрация: 11.09.2013
Сообщений: 1,995
06.12.2013, 11:47     Объясните функцию? #8
Цитата Сообщение от Demon55 Посмотреть сообщение
А для чего вот эти строки?
C++
1
2
x=F ("Hello asd 3 world!");
    x=F(a.c_str());
просто разные варианты вовода строки в функцию

строка зписывается в проге и вызываетсяс функцией:
C++
1
x=F ("Hello asd 3 world!");
C++
1
2
getline(cin,a); //здесь мы записываем с клавы строку в а
x=F(a.c_str());
здесь же a - объект string , c_str() - метод класса, который возвращает указатель на тип char

можно сделать что-то типа char b[255]; потом записать туда твою строку и символ конца строки, но это во первых тратит 255 байт, а реально понадобится меньше + неудобно, но я уже даж не помню как в массив char что-то записывать т.к. string удобнее))
Yandex
Объявления
06.12.2013, 11:47     Объясните функцию?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru