Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.50/18: Рейтинг темы: голосов - 18, средняя оценка - 4.50
79 / 79 / 8
Регистрация: 28.03.2010
Сообщений: 306

Помагите написать функции для следующей программы

04.06.2010, 19:00. Показов 4361. Ответов 46
Метки нет (Все метки)

Помагите написать функции для следующей программы
1)создать функцию в которой,как параметр передаётся строка и которая возвращает колличество слов в строке
2)создать функцию для строки , которую вводят с клавиатуры и которая считает колличество слов начинающихся с первой буквы этой строки
3)создать функцию ,которую вводят с клавиатуры и которая считает колличество слов в строке
В mainе через оператор case зделать менюшку в которой бы они все вызывались
1
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.06.2010, 19:00
Ответы с готовыми решениями:

Написать программу вычисления следующей функции
Написать программу вычисления следующей функции y=\begin{cases} bx+cx & \text{ , } b \lt c \\ sin(x)+b & \text{ , } b=c \\ ...

Для данного целого x найти значение следующей функции
If25. Для данного целого x найти значение следующей функции f, принимающей значения целого типа: f(x) = 2·x, если x...

Для данного вещественного x найти значение следующей функции f
Для данного вещественного x найти значение следующей функции f, принимающей значения целого типа: 2*x, если X<-2 или...

46
79 / 79 / 8
Регистрация: 28.03.2010
Сообщений: 306
07.06.2010, 17:02  [ТС]
если несложно,можеш в уже полностью исправленом виде прислать
0
 Аватар для Kastaneda
5232 / 3206 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
07.06.2010, 17:03
Интересно, а препод это по коду понял, или на самой программе?
0
38 / 38 / 10
Регистрация: 02.06.2010
Сообщений: 105
07.06.2010, 17:03
и во вторую следует добавить проверку - что первый элемент строки не пробел.
0
79 / 79 / 8
Регистрация: 28.03.2010
Сообщений: 306
07.06.2010, 17:05  [ТС]
препод заметил по коду
0
 Аватар для Kastaneda
5232 / 3206 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
07.06.2010, 17:06
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include <iostream>
int countword(char*);
int _countword();
int countword();
int main (){
    char str[80];
    std::cout<<"For 1st function, press 1"<<std::endl<<"For 2nd function, press 2"<<std::endl\
    <<"For 3rd function, press 3"<<std::endl;
    int i;
    std::cin>>i;
    std::cin.ignore();
    switch (i){
        case 1: std::cout<<countword("bla bla bla")<<std::endl;
        break;
        case 2: std::cout<<_countword()<<std::endl;
        break;
        case 3:std::cout<<countword()<<std::endl;
        }
    system("pause");       
    return 0;
}
int countword(){
    char str[80];
    std::cout<<"Vvedite stroku :";
    gets (str);
    int count=1;
    for(int i=0;str[i]!='\0';i++)
        if(str[i]==' '){
            count++;
            while(str[i]==' ')++i;
        }    
        return count;
    }
int countword(char* str){
    int count=1;
    for(int i=0;str[i]!='\0';i++)
        if(str[i]==' '){
            count++;
            while(str[i]==' ')++i;
        } 
        return count;
    }  
int _countword(){
    char str[80];
    std::cout<<"Vvedite stroku :";
    gets(str);
    int count=1;
    char ch=str[0];
    for(int i=1;str[i]!='\0';i++){
        if(str[i]==' '&&str[++i]==ch)count++;
        while(str[i]==' ')++i;}  // эту строку добавить!!!
        return count;
    }
1
79 / 79 / 8
Регистрация: 28.03.2010
Сообщений: 306
07.06.2010, 17:07  [ТС]
спасиб
0
 Аватар для Kastaneda
5232 / 3206 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
07.06.2010, 17:08
Цитата Сообщение от mexx-nikitin Посмотреть сообщение
препод заметил по коду
Он скорее всего ждал, что ты с ним начнешь спорить, и покажешь эту строку. Либо препод латентный преверженец растакультуры(всмысле курит)

Добавлено через 48 секунд
скомпилируй программу, сам убедись - все работает!
0
79 / 79 / 8
Регистрация: 28.03.2010
Сообщений: 306
07.06.2010, 17:23  [ТС]
а поначалу этот косяк и я сам заметил ,но потом подумал, что препод незаметит))

Добавлено через 8 минут
смотри , а если в 3 функции вести сночала пробел а потом слово то опять ошибка

Добавлено через 5 минут
if(str[i]==' '&&str[++i]==ch),а в чём здесь отличие str[i] от str[++i]
0
 Аватар для Kastaneda
5232 / 3206 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
07.06.2010, 17:51
Блин, mexx-nikitin, сбил ты меня со своим преподом) Я начал думать, как так я ступил, когда этот код писал, подумал, подумал и понял - я тогда неступил, я сейчас ступил! Не нужна там эта строка, было все правильно. Там же ф-ция считает кол-во слов, начинающихся на первую букву в предложении.
if(str[i]==' '&&str[++i]==ch),а в чём здесь отличие str[i] от str[++i]
отличие в том, что str[i] это текущий символ, а str[++i]- это следующий символ.
смотри , а если в 3 функции вести сночала пробел а потом слово то опять ошибка
ага, исправлю, только маленько попозже(сегодня), сейчас занят.
0
79 / 79 / 8
Регистрация: 28.03.2010
Сообщений: 306
07.06.2010, 18:11  [ТС]
к стати в 1-ой и 2-й такая же штука с пробелом,но если сночала символы вводить , а потом пробел то всё правильно
0
 Аватар для Kastaneda
5232 / 3206 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
07.06.2010, 19:01
к стати в 1-ой и 2-й такая же штука с пробелом,но если сночала символы вводить , а потом пробел то всё правильно
Ага, исправил! Вот готовый код, 3-я ф-ция (case 2) полностью исправлена, теперь хоть сколько пробелов в любом месте, работает правильно!
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#include <iostream>
int countword(char*);
int _countword();
int countword();
int main (){
    char str[80];
    std::cout<<"For 1st function, \"press\" 1"<<std::endl<<"For 2nd function, press 2"<<std::endl\
    <<"For 3rd function, press 3"<<std::endl;
    int i;
    std::cin>>i;
    std::cin.ignore();
    switch (i){
        case 1: std::cout<<countword("bla bla bla")<<std::endl;
        break;
        case 2: std::cout<<_countword()<<std::endl;
        break;
        case 3:std::cout<<countword()<<std::endl;
        }
    system("pause");       
    return 0;
}
int countword(){
    char str[80];
    std::cout<<"Vvedite stroku :";
    gets (str);
    int count=1;
    int i=0;
    while(str[i]==' ')++i;
    for(;str[i]!='\0';i++)
        if(str[i]==' '){
            count++;
            while(str[i]==' ')++i;
        }    
        return count;
    }
int countword(char* str){
    int count=1;
    int i=0;
    while(str[i]==' ')++i;
    for(;str[i]!='\0';i++)
        if(str[i]==' '){
            count++;
            while(str[i]==' ')++i;
        } 
        return count;
    }  
int _countword(){
    char str[80];
    std::cout<<"Vvedite stroku :";
    gets(str);
    int count=1;
    int i=0;
    while (str[i]==' ')++i;
    char ch=str[i];
    for(++i;str[i]!='\0';i++)
        if(str[i]==ch&&str[i-1]==' ')count++;
        return count;
    }

P.S. mexx-nikitin глянь личку)

Добавлено через 14 минут
Еще одного не учел, если строка заканчивается пробелом, то результат не правильный, вот, теперь вроде все учел)
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include <iostream>
int countword(char*);
int _countword();
int countword();
int main (){
    char str[80];
    std::cout<<"For 1st function, \"press\" 1"<<std::endl<<"For 2nd function, press 2"<<std::endl\
    <<"For 3rd function, press 3"<<std::endl;
    int i;
    std::cin>>i;
    std::cin.ignore();
    switch (i){
        case 1: std::cout<<countword("bla bla bla")<<std::endl;
        break;
        case 2: std::cout<<_countword()<<std::endl;
        break;
        case 3:std::cout<<countword()<<std::endl;
        }
    system("pause");       
    return 0;
}
int countword(){
    char str[80];
    std::cout<<"Vvedite stroku :";
    gets (str);
    int count=1;
    int i=0;
    while(str[i]==' ')++i;
    for(;str[i]!='\0';i++)
        if(str[i]==' '){
            count++;
            while(str[i]==' '){
                ++i;
                if(str[i+1]=='\0')--count;}
        }    
        return count;
    }
int countword(char* str){
    int count=1;
    int i=0;
    while(str[i]==' ')++i;
    for(;str[i]!='\0';i++)
        if(str[i]==' '){
            count++;
            while(str[i]==' '){
                ++i;
                if(str[i+1]=='\0')--count;}
        } 
        return count;
    }  
int _countword(){
    char str[80];
    std::cout<<"Vvedite stroku :";
    gets(str);
    int count=1;
    int i=0;
    while (str[i]==' ')++i;
    char ch=str[i];
    for(++i;str[i]!='\0';i++)
        if(str[i]==ch&&str[i-1]==' ')count++;
        return count;
    }
0
79 / 79 / 8
Регистрация: 28.03.2010
Сообщений: 306
07.06.2010, 19:05  [ТС]
спасибо,надеюсь препод не придерётся
0
 Аватар для Kastaneda
5232 / 3206 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
09.06.2010, 17:16
Напиши хоть сдал\несдал? Интересно же...
1
79 / 79 / 8
Регистрация: 28.03.2010
Сообщений: 306
09.06.2010, 17:53  [ТС]
кенечно здал ,препод помучил немного(3 доп задачи задал,которых я решил).Итог:допуск к экзамену.Ну что здал математику?

Добавлено через 14 минут
Ты не мог бы помоч моему брату? просто у меня пока мало времени, ему надо написать менюшку в майне ( с помощью оператора case) чтобы вызывались следубщие фунуции: 1)в строке посчитать количество символов которые введёт пользователь и 2)если есть в строке 2 повторяющихся символа заменить их на две точки

Добавлено через 3 минуты
вторую я написал но её надо сделать проще т к препод ему этого не объяснял но я незнаю как это сделать вот код
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
#include <iostream>
using namespace std;
 
int main()
{
        char temp = ' ', temp1 =' ';
        while(cin.peek() != '\n')
        {
                temp = cin.get();
                                if(temp == ' ')
                                {
                                        cout << " ";
                                        continue;
                                }
                temp1 = cin.peek();
                if(temp == temp1)
                {
                        cin.get();
                        cout << "..";
                }
                else
                        cout << temp;
        }
        cout << endl;
        return 0;
}
0
 Аватар для Kastaneda
5232 / 3206 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
09.06.2010, 19:00
Цитата Сообщение от mexx-nikitin Посмотреть сообщение
если есть в строке 2 повторяющихся символа
Всмысле в строке вообще? или, как по твоему коду получается, только если 2 одинаковых символа подряд?

Кстати, ты код правда сам написал?
0
79 / 79 / 8
Регистрация: 28.03.2010
Сообщений: 306
09.06.2010, 19:04  [ТС]
в строке, а насчёт кода нескажу))
0
 Аватар для Kastaneda
5232 / 3206 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
09.06.2010, 19:08
Цитата Сообщение от mexx-nikitin Посмотреть сообщение
а насчёт кода нескажу))
Ясно)
Еще вопрос: символы заменить на ".." только если их 2 ,или 2 и больше?
0
79 / 79 / 8
Регистрация: 28.03.2010
Сообщений: 306
09.06.2010, 19:13  [ТС]
брат говорил о том что если в строке 2 повторяющихся символа то заменить их на 2 точки
0
 Аватар для Kastaneda
5232 / 3206 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
09.06.2010, 21:01
Вообще-то странное условие, а если будут 3 одинаковых символа, что тогда?
Вот код, который меняет все одинаковые символы в строке на символ '.' (2 точки - это 2 символа, тогда всю строку сдвигать придется, я думаю имелось ввиду просто '.', хотя если что - переписать не сложно)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
using namespace std;
 int main()
{    char str[81],ch[257];
     for(int i=0;i<257;i++)
        ch[i]=-1;
     cout<<"Enter string : ";
     cin.getline(str,80);
     int len=strlen(str);
     for(int i=0;i<len;i++){
         if(str[i]==' ')continue;
         if(ch[str[i]]>=0){
         str[i]=str[ch[str[i]]]='.';}
         else
         ch[str[i]]=i;
     }    
     cout<<str<<endl;
        system ("pause");
        return 0;
}
Можно просто твой код упростить, чтоб там не было "пиков" и "гетов", попозже выложу. А по первому заданию - есть ф-ция strlen() ? Или нужно без нее обойтись?

Добавлено через 18 минут
Вот, делает вточности, что твой код :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
using namespace std;
 int main()
{    char str[81];
     cin.getline(str,80);
     int len=strlen(str);
     for(int i=0;i<len;i++)
     if (str[i]==str[i+1]){
         ++i;
         cout<<"..";}
     else 
         cout<<str[i];
        system ("pause");
        return 0;
}
Добавлено через 22 минуты
1)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
using namespace std;
 int main()
{    char str[81];
     cout<<"Enter string : ";
     cin.getline(str,80);
     int len=0;
     for (int i=0;str[i]!='\0';i++)
     if(str[i]!=' ')len++;  // пробел не считаем за символ
     cout<<"String has "<<len<<" simbol"<<endl;   
        system ("pause");
        return 0;
}
Добавлено через 22 минуты
Держи готовый код:
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
28
29
30
31
32
33
34
35
36
37
38
#include <iostream>
using namespace std;
void lenstring();
void simbolpoint();
 int main()
{    cout<<"If you want call first function enter 1"<<endl\
     <<"If you want call second function enter 2"<<endl;
     int i;
     cin>>i;
     cin.ignore();
     switch (i){
         case 1 : lenstring();break;
         case 2 : simbolpoint();break;
         default : cout<<"Goodbye!!!"<<endl;}   
        system ("pause");
        return 0;
}
void lenstring(){
     char str[81];
     cout<<"Enter string : ";
     cin.getline(str,80);
     int len=0;
     for (int i=0;str[i]!='\0';i++)
     if(str[i]!=' ')len++;  // пробел не считаем за символ
     cout<<"String has "<<len<<" simbol"<<endl;
     }
void simbolpoint() {   // аналог твоего кода
     char str[81];
     cin.getline(str,80);
     int len=strlen(str);
     for(int i=0;i<len;i++)
     if (str[i]==str[i+1]){
         ++i;
         cout<<"..";}
     else 
         cout<<str[i];
     cout<<endl;    
     }
1
79 / 79 / 8
Регистрация: 28.03.2010
Сообщений: 306
10.06.2010, 23:20  [ТС]
привет, слушай а как сделать так чтобы в 1ой функции пробел считался за символ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.06.2010, 23:20

Для данного вещественного x найти значение следующей функции f, при-нимающей значения целого типа:
Для данного вещественного x найти значение следующей функции f, при-нимающей значения целого типа: 0, если x &lt; 0, f(x) = 1, ...

Для следующей программы написать функцию, которая определяет выполняется теорема Пифагора для трех величин
Для следующей программы написать функцию, которая определяет выполняется теорема Пифагора для трех величин. A=VAL(TEXT1.TEXT) ...

Написать алгоритм для программы вычисления сложной функции
не могли бы мне помочь с написанием алгоритма к такой программе var a,b,c,d,x,y : Integer; function F(a,b,c,d,x,y :...

Сохранение данных из TextBox для следующей загрузки программы
Всем привет... Подскажите пожалуйста можно ли так сделать чтобы допустим: Есть Form1 у форме есть TextBox1... И когда у TextBox написать...

Написать программу для решения следующей задачи
Ввести фамилию, имя, отчество, возраст жителя Среднего Урала. а)Вывести инициалы и пол человека б)определить, относится ли его возраст...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Программа для com-порта
Uhbif79 05.06.2026
Всем привет, давно хотел изучить Qt, начинал, бросал, потом снова начинал. И сейчас вот смог написать свою первую программу. До этого имел опыт программирования микроконтроллеров, писал прошивки на. . .
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений. . . .
21 мат мед. Планы на развитие модели здравоСохранения
anaschu 01.06.2026
AnyLogic: план развития симуляционной модели рабочего коллектива — динамический абсентеизм, реальные данные, три сценария сравнения Продолжаю серию постов о дискретно-событийной модели рабочего. . .
20. Мат мед. Абсентеизм как отдельный тип простоя
anaschu 29.05.2026
Апдейт модели: исправленные баги, абсентеизм и новые механизмы Продолжаю развивать ранее описанную модель рабочего коллектива на AnyLogic. За последние несколько дней был проведён серьёзный. . .
19. здоровье, усталость и психотип работника влияют на производительность предприятия, и наоборот, производительность на здоровье, усталось и психотип
anaschu 28.05.2026
Дискретно-событийная модель рабочего коллектива на AnyLogic: здоровье, выгорание, психотипы и микростимуляция Привет, коллеги. Хочу поделиться итогами нескольких недель работы над симуляционной. . .
"Прокси" для последовательного порта
Eddy_Em 28.05.2026
Эту штуку написал я достаточно давно. Но сейчас вот понадобилось настроить датчик грозы, но при этом не отключать его от "метеодемона". Соответственно, надо запустить этот "прокси": метеодемон будет. . .
Рефакторинг программы уравнивания.
Massaraksh7 26.05.2026
Пример по предыдущей записи в блоге. Но, надо заметить, что, во-первых, там оптимизация не только математики, но и работы с базой данных, и с графами, а во-вторых, это ещё не всё.
Использование TThread в Lazarus для математических вычислений.
Massaraksh7 25.05.2026
Производя рефакторинг своих программ на предмет ускорения их работы, обратил внимание на такой аспект, как сокращение времени матвычислений. Дело в том, что приходится работать с большими матрицами. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru