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

Количество цифр в строке - C++

Восстановить пароль Регистрация
 
DmitryM5
Love~
 Аватар для DmitryM5
51 / 51 / 3
Регистрация: 27.08.2013
Сообщений: 743
Записей в блоге: 1
21.10.2013, 15:55     Количество цифр в строке #1
Задание: Дана строка. Подсчитать количество содержащихся в ней цифр.
int countDigits(char * str);

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

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
#include <iostream>
#include <locale>
#include <string.h>
 
#include "cstring.h"
 
using namespace std;
 
int main() {
    std::locale::global(std::locale(""));
    int i;
    char s[100];
   cout<<"Введите 1-5 (выбора задания) "<<endl;
   cin>>i;
   switch(i) {
    case 1: { cout<<"Введите строку желательно с цифрами "<<endl;
            cin>>s;//cin.getline(s,100);
            cout<<"Количество цифр в строке = "<<countDigits(s)<<endl;
          break;
        }
 
    case 2:
    case 3:
    case 4:
    case 5:
 
    ;}
    system("pause");
    return 0;
}
C++
1
2
3
4
5
6
7
8
9
#include "cstring.h"
 
//1.Дана строка. Подсчитать количество содержащихся в ней цифр.
int countDigits(char * str) {
    int k=0;
    for (char * p = str; *p != 0; ++p) 
        if(*p>=0&&*p<=9) k++;
    return k;
}
Добавлено через 7 минут
Update функцию переделал,работает правильно а getline не хочет...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
GoldenChild
28 / 28 / 4
Регистрация: 12.06.2013
Сообщений: 65
21.10.2013, 16:33     Количество цифр в строке #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
#include <iostream>
#include <locale>
#include <cstring>
 
using namespace std;
 
//1.Дана строка. Подсчитать количество содержащихся в ней цифр.
int countDigits(char *str) {
    int k = 0;
    int i = 0;
    while (str[i] != '\0') {
        if (isdigit(str[i])) k++;
        i++;
    }
    return k;
}
 
int main() {
    std::locale::global(std::locale(""));
    int i;
    char s[100];
   cout<<"Введите 1-5 (выбора задания) "<<endl;
   cin>>i;
   switch(i) {
    case 1: { cout<<"Введите строку желательно с цифрами "<<endl;
            cin.get();
            cin.getline(s, 100);
            cout << s << endl;
            cout<<"Количество цифр в строке = "<<countDigits(s)<<endl;
          break;
        }
 
    case 2:
    case 3:
    case 4:
    case 5:
 
    ;}
    system("pause");
    return 0;
}
DmitryM5
Love~
 Аватар для DmitryM5
51 / 51 / 3
Регистрация: 27.08.2013
Сообщений: 743
Записей в блоге: 1
21.10.2013, 16:37  [ТС]     Количество цифр в строке #3
Цитата Сообщение от GoldenChild Посмотреть сообщение
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
#include <iostream>
#include <locale>
#include <cstring>
 
using namespace std;
 
//1.Дана строка. Подсчитать количество содержащихся в ней цифр.
int countDigits(char *str) {
    int k = 0;
    int i = 0;
    while (str[i] != '\0') {
        if (isdigit(str[i])) k++;
        i++;
    }
    return k;
}
 
int main() {
    std::locale::global(std::locale(""));
    int i;
    char s[100];
   cout<<"Введите 1-5 (выбора задания) "<<endl;
   cin>>i;
   switch(i) {
    case 1: { cout<<"Введите строку желательно с цифрами "<<endl;
            cin.get();
            cin.getline(s, 100);
            cout << s << endl;
            cout<<"Количество цифр в строке = "<<countDigits(s)<<endl;
          break;
        }
 
    case 2:
    case 3:
    case 4:
    case 5:
 
    ;}
    system("pause");
    return 0;
}
Спасибо,но казалось что работало и без cin.get();
Вот старый код,все работало....:
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 "stringlesson.h"
#include <iostream>
#include <locale>
#include <string.h>
 
using namespace std;
 
int main() {
    std::locale::global(std::locale(""));
    cout<<"1-ое задание :"<<endl;
    cout<<"Введите строку "<<endl;
    char s[100];
    char s2[100];char s3[100];char s4[100];
    cin.getline(s,100);
    cout<<"Первая латинская гласная буква под номером = "<<FindFirstGlasn(s)<<endl;
    cout<<"2-ое задание :"<<endl;
    cout<<"Введите две строки "<<endl;
    cin.getline(s2,100);
    cin.getline(s3,100);
    cout<<"Количество вхождений второй строки в первую = "<<KolVhogdS2VS1(s2,s3)<<endl;
    cout<<"3-е задание :"<<endl;
    cout<<"Введите строку с хотя бы одним пробелом "<<endl;
    cin.getline(s4,100);
    cout<<"Индекс последнего пробела = "<<FindIndLastSpace(s4)<<endl;
system("pause");
return 0;
}
GoldenChild
28 / 28 / 4
Регистрация: 12.06.2013
Сообщений: 65
21.10.2013, 16:40     Количество цифр в строке #4
Цитата Сообщение от DmitryM5 Посмотреть сообщение
Спасибо,но казалось что работало и без cin.get();
Вот старый код,все работало....:
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 "stringlesson.h"
#include <iostream>
#include <locale>
#include <string.h>
 
using namespace std;
 
int main() {
    std::locale::global(std::locale(""));
    cout<<"1-ое задание :"<<endl;
    cout<<"Введите строку "<<endl;
    char s[100];
    char s2[100];char s3[100];char s4[100];
    cin.getline(s,100);
    cout<<"Первая латинская гласная буква под номером = "<<FindFirstGlasn(s)<<endl;
    cout<<"2-ое задание :"<<endl;
    cout<<"Введите две строки "<<endl;
    cin.getline(s2,100);
    cin.getline(s3,100);
    cout<<"Количество вхождений второй строки в первую = "<<KolVhogdS2VS1(s2,s3)<<endl;
    cout<<"3-е задание :"<<endl;
    cout<<"Введите строку с хотя бы одним пробелом "<<endl;
    cin.getline(s4,100);
    cout<<"Индекс последнего пробела = "<<FindIndLastSpace(s4)<<endl;
system("pause");
return 0;
}
Когда вы вводите "1" для выбора в вашем меню, возможно (!!!), но я точно не могу сказать, а после этого читаете строку, то оно читает в нее пустой пробел. Можно проверить:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <locale>
#include <cstring>
 
using namespace std;
 
 
int main() {
    std::locale::global(std::locale(""));
    int i;
    char s[100];
    cout<<"Введите 1-5 (выбора задания) "<<endl;
    cin>>i;
    cin.getline(s, 100);
    cout << s << endl; // Выведем строку, которую считали и увидим там " "
    system("pause");
    return 0;
}
Yandex
Объявления
21.10.2013, 16:40     Количество цифр в строке
Ответ Создать тему
Опции темы

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