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

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

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

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

05.12.2013, 13:57. Просмотров 255. Ответов 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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.12.2013, 13:57
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Объясните функцию? (C++):

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

Объясните функцию 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> ...

7
dzrkot
zzzZZZ...
519 / 349 / 53
Регистрация: 11.09.2013
Сообщений: 2,004
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
Demon55
1 / 1 / 0
Регистрация: 29.11.2013
Сообщений: 46
05.12.2013, 14:05  [ТС] #3
Хм а как правильно вызвать ф-цию?

Ибо если я введу строку так:
C++
1
2
cout<<"Введите строку"; 
scanf_s("%s", &s, 100);
Считает только 1 слово.
0
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 элемент, что не комельфо
0
dzrkot
zzzZZZ...
519 / 349 / 53
Регистрация: 11.09.2013
Сообщений: 2,004
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
ValeryS
Модератор
6654 / 5063 / 470
Регистрация: 14.02.2011
Сообщений: 16,934
05.12.2013, 14:22 #6
Цитата Сообщение от bradobrei Посмотреть сообщение
Эта функция получает на вход строку символов и считает символы отличные от пробела.
фиг вам
она считает только когда предыдущий символ пробел а текущий не пробел
Цитата Сообщение от Demon55 Посмотреть сообщение
if (p[0]!=' '&&p[-1]==' ') n++;
следовательно считает количество слов
Цитата Сообщение от bradobrei Посмотреть сообщение
Скорее всего не рабочая , из-за этото участка
до этого указатель увеличивается на 1 значит не может выйти за пределы строки
0
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());
0
dzrkot
zzzZZZ...
519 / 349 / 53
Регистрация: 11.09.2013
Сообщений: 2,004
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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.12.2013, 11:47
Привет! Вот еще темы с ответами:

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

Сделать функцию ввода элементов, функцию вывода элементов, и функцию обработки - C++
Добрый день форумчане, помогите сделать функцию ввода элементов, функцию вывода элементов, и функцию обработки. Сам код #include...

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

Запилить функцию-аллюзию на функцию switch(), принимающую буквенные значения - C++
Фрагмент кода: ... int fu; cout &lt;&lt; &quot;Сделать что-то? (1=да, 2=нет) &quot;; //здесь предполагается введение не цифры, а буквы Y или N cin...


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

Или воспользуйтесь поиском по форуму:
8
Yandex
Объявления
06.12.2013, 11:47
Ответ Создать тему
Опции темы

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