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

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

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

Author24 — интернет-сервис помощи студентам
Помагите написать функции для следующей программы
1)создать функцию в которой,как параметр передаётся строка и которая возвращает колличество слов в строке
2)создать функцию для строки , которую вводят с клавиатуры и которая считает колличество слов начинающихся с первой буквы этой строки
3)создать функцию ,которую вводят с клавиатуры и которая считает колличество слов в строке
В mainе через оператор case зделать менюшку в которой бы они все вызывались
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.06.2010, 19:00
Ответы с готовыми решениями:

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

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

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

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

46
79 / 79 / 8
Регистрация: 28.03.2010
Сообщений: 306
07.06.2010, 17:02  [ТС] 21
Author24 — интернет-сервис помощи студентам
если несложно,можеш в уже полностью исправленом виде прислать
0
5231 / 3204 / 362
Регистрация: 12.12.2009
Сообщений: 8,113
Записей в блоге: 2
07.06.2010, 17:03 22
Интересно, а препод это по коду понял, или на самой программе?
0
38 / 38 / 10
Регистрация: 02.06.2010
Сообщений: 105
07.06.2010, 17:03 23
и во вторую следует добавить проверку - что первый элемент строки не пробел.
0
79 / 79 / 8
Регистрация: 28.03.2010
Сообщений: 306
07.06.2010, 17:05  [ТС] 24
препод заметил по коду
0
5231 / 3204 / 362
Регистрация: 12.12.2009
Сообщений: 8,113
Записей в блоге: 2
07.06.2010, 17:06 25
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  [ТС] 26
спасиб
0
5231 / 3204 / 362
Регистрация: 12.12.2009
Сообщений: 8,113
Записей в блоге: 2
07.06.2010, 17:08 27
Цитата Сообщение от mexx-nikitin Посмотреть сообщение
препод заметил по коду
Он скорее всего ждал, что ты с ним начнешь спорить, и покажешь эту строку. Либо препод латентный преверженец растакультуры(всмысле курит)

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

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

Добавлено через 5 минут
if(str[i]==' '&&str[++i]==ch),а в чём здесь отличие str[i] от str[++i]
0
5231 / 3204 / 362
Регистрация: 12.12.2009
Сообщений: 8,113
Записей в блоге: 2
07.06.2010, 17:51 29
Блин, 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  [ТС] 30
к стати в 1-ой и 2-й такая же штука с пробелом,но если сночала символы вводить , а потом пробел то всё правильно
0
5231 / 3204 / 362
Регистрация: 12.12.2009
Сообщений: 8,113
Записей в блоге: 2
07.06.2010, 19:01 31
к стати в 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  [ТС] 32
спасибо,надеюсь препод не придерётся
0
5231 / 3204 / 362
Регистрация: 12.12.2009
Сообщений: 8,113
Записей в блоге: 2
09.06.2010, 17:16 33
Напиши хоть сдал\несдал? Интересно же...
1
79 / 79 / 8
Регистрация: 28.03.2010
Сообщений: 306
09.06.2010, 17:53  [ТС] 34
кенечно здал ,препод помучил немного(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
5231 / 3204 / 362
Регистрация: 12.12.2009
Сообщений: 8,113
Записей в блоге: 2
09.06.2010, 19:00 35
Цитата Сообщение от mexx-nikitin Посмотреть сообщение
если есть в строке 2 повторяющихся символа
Всмысле в строке вообще? или, как по твоему коду получается, только если 2 одинаковых символа подряд?

Кстати, ты код правда сам написал?
0
79 / 79 / 8
Регистрация: 28.03.2010
Сообщений: 306
09.06.2010, 19:04  [ТС] 36
в строке, а насчёт кода нескажу))
0
5231 / 3204 / 362
Регистрация: 12.12.2009
Сообщений: 8,113
Записей в блоге: 2
09.06.2010, 19:08 37
Цитата Сообщение от mexx-nikitin Посмотреть сообщение
а насчёт кода нескажу))
Ясно)
Еще вопрос: символы заменить на ".." только если их 2 ,или 2 и больше?
0
79 / 79 / 8
Регистрация: 28.03.2010
Сообщений: 306
09.06.2010, 19:13  [ТС] 38
брат говорил о том что если в строке 2 повторяющихся символа то заменить их на 2 точки
0
5231 / 3204 / 362
Регистрация: 12.12.2009
Сообщений: 8,113
Записей в блоге: 2
09.06.2010, 21:01 39
Вообще-то странное условие, а если будут 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  [ТС] 40
привет, слушай а как сделать так чтобы в 1ой функции пробел считался за символ?
0
10.06.2010, 23:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.06.2010, 23:20
Помогаю со студенческими работами здесь

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

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

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

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


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

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