1 / 1 / 1
Регистрация: 29.11.2013
Сообщений: 46
1

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

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

Author24 — интернет-сервис помощи студентам
Нужно объяснить и написать вызов функции.
Функция связана со строками, но что делает не пойму.
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;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.12.2013, 13:57
Ответы с готовыми решениями:

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

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

Объясните функцию отрисовки графики
Объясните пожалуйста,что происходить в части кода void drawT? #include <windows.h> #include...

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

7
zzzZZZ...
527 / 358 / 94
Регистрация: 11.09.2013
Сообщений: 2,041
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;
}
считает кол-во слов в строке походу
0
1 / 1 / 1
Регистрация: 29.11.2013
Сообщений: 46
05.12.2013, 14:05  [ТС] 3
Хм а как правильно вызвать ф-цию?

Ибо если я введу строку так:
C++
1
2
cout<<"Введите строку"; 
scanf_s("%s", &s, 100);
Считает только 1 слово.
0
Продам уран 238U
125 / 124 / 127
Регистрация: 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 элемент, что не комельфо
0
zzzZZZ...
527 / 358 / 94
Регистрация: 11.09.2013
Сообщений: 2,041
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ой р++) и предыдущее
1
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,512
05.12.2013, 14:22 6
Цитата Сообщение от bradobrei Посмотреть сообщение
Эта функция получает на вход строку символов и считает символы отличные от пробела.
фиг вам
она считает только когда предыдущий символ пробел а текущий не пробел
Цитата Сообщение от Demon55 Посмотреть сообщение
if (p[0]!=' '&&p[-1]==' ') n++;
следовательно считает количество слов
Цитата Сообщение от bradobrei Посмотреть сообщение
Скорее всего не рабочая , из-за этото участка
до этого указатель увеличивается на 1 значит не может выйти за пределы строки
0
1 / 1 / 1
Регистрация: 29.11.2013
Сообщений: 46
06.12.2013, 11:38  [ТС] 7
А для чего вот эти строки?
C++
1
2
x=F ("Hello asd 3 world!");
    x=F(a.c_str());
0
zzzZZZ...
527 / 358 / 94
Регистрация: 11.09.2013
Сообщений: 2,041
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 удобнее))
1
06.12.2013, 11:47
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.12.2013, 11:47
Помогаю со студенческими работами здесь

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

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

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

Объясните функцию
Добрый день. Поясняю: делаю бэкап joomla Akeebой - выдает ошибку PHP WARNING on line 138 in file...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru