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

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

Восстановить пароль Регистрация
 
Demon55
1 / 1 / 0
Регистрация: 29.11.2013
Сообщений: 42
05.12.2013, 13:57     Объясните функцию? #1
Нужно объяснить и написать вызов функции.
Функция связана со строками, но что делает не пойму.
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;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dzrkot
zzzZZZ...
 Аватар для dzrkot
516 / 346 / 53
Регистрация: 11.09.2013
Сообщений: 1,977
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
Сообщений: 42
05.12.2013, 14:05  [ТС]     Объясните функцию? #3
Хм а как правильно вызвать ф-цию?

Ибо если я введу строку так:
C++
1
2
cout<<"Введите строку"; 
scanf_s("%s", &s, 100);
Считает только 1 слово.
bradobrei
Продам уран 238U
 Аватар для bradobrei
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...
 Аватар для dzrkot
516 / 346 / 53
Регистрация: 11.09.2013
Сообщений: 1,977
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
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,042
05.12.2013, 14:22     Объясните функцию? #6
Цитата Сообщение от bradobrei Посмотреть сообщение
Эта функция получает на вход строку символов и считает символы отличные от пробела.
фиг вам
она считает только когда предыдущий символ пробел а текущий не пробел
Цитата Сообщение от Demon55 Посмотреть сообщение
if (p[0]!=' '&&p[-1]==' ') n++;
следовательно считает количество слов
Цитата Сообщение от bradobrei Посмотреть сообщение
Скорее всего не рабочая , из-за этото участка
до этого указатель увеличивается на 1 значит не может выйти за пределы строки
Demon55
1 / 1 / 0
Регистрация: 29.11.2013
Сообщений: 42
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++
Запилить функцию-аллюзию на функцию switch(), принимающую буквенные значения C++
Объясните, как передать данные в функцию C++

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

Или воспользуйтесь поиском по форуму:
dzrkot
zzzZZZ...
 Аватар для dzrkot
516 / 346 / 53
Регистрация: 11.09.2013
Сообщений: 1,977
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     Объясните функцию?
Ответ Создать тему
Опции темы

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