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

C для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.77
Luxmunx
2 / 2 / 0
Регистрация: 05.11.2012
Сообщений: 86
#1

Поиск цифр в строке - C (СИ)

14.04.2013, 13:52. Просмотров 2274. Ответов 6
Метки нет (Все метки)

Добрый день! Сейчас сижу и никак не могу понять почему у меня не работает как положено мой код:
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 "stdafx.h"
#include "iostream"
#include "string.h"
#include "cstring"
using namespace std;
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL,"Russian");
    char s[255];
FF: cout<<"Введите строку: "; cin>>s;
    int h; // Опр. есть ли цифра в строке, если есть, то 1
    int w; // количество цифр
    w=0;
    h=0;
    for (int i=0;i<256;i++)
        {
            if ((s[i]=='0') | (s[i]=='1') | (s[i]=='2') | (s[i]=='3') | (s[i]=='4') | (s[i]=='5') | (s[i]=='6') | (s[i]=='7') | (s[i]=='8') | (s[i]=='9'))
           { h=1;
            w++;};
            
        };
    if (h==1) 
        cout<<"Данная строка содержит цифры. Количество: "<<w;
        else cout<<"Данная строка не сод. цифр \n";
        h=0;
        w=0;
 
 
    char y;
    cout<<"\nПродолжить? (да - y)"; cin >> y;cout<<"\n";
    if (y=='y')
        goto FF;
    else exit;
    // system("pause");
    return 0;
}
Поиск цифр в строке

Помогите пожалуйста разобраться

И еще один момент. Для того, чтобы не задавать в самом начале размер строки что надо делать?
Как только я убираю char s[255] и ставлю на его место char s - у меня показывается вот такая штука:
Поиск цифр в строке
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.04.2013, 13:52
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Поиск цифр в строке (C (СИ)):

Поиск мин элемента в строке матрицы и приращение элементов в строке к нему (программа работает не правильно) - C (СИ)
Есть матрица и функции поиска минимального элемента в строке и приращение элементов в строке к нему. но программа работает не правильно......

Сложение цифр в строке - C (СИ)
Здравствуйте. Скажите, пожалуйста, что здесь неправильно char number_1 = &quot;12312312311231231231123321123&quot;; char number_2 =...

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

Перестановка букв и цифр в строке - C (СИ)
Друзья! Начал изучать Си, но застрял вот на какой задаче: имеется строка содержащая буквы и цифры. Необходимо преобразовать эту строку...

Вычислить сумму цифр в строке - C (СИ)
1) Вычислить сумму цифр в строке вида &quot;1ab23cef05&quot; ( P S строка вводиться с клавиатуры) (ответ котрый должен получатся 11) 2) Выполнить...

Вывод цифр, содержащихся в строке - C (СИ)
Здравствуйте, можете помочь перевести программу на строки, задание такое, нужно вводить в строку знаки,числа,буквы, а выводиться должны...

6
anmartex
...
1708 / 1201 / 496
Регистрация: 12.02.2013
Сообщений: 1,978
14.04.2013, 17:18 #2
Luxmunx, старайтесь goto не использовать в своих программах.

Цитата Сообщение от Luxmunx Посмотреть сообщение
Как только я убираю char s[255] и ставлю на его место char s - у меня показывается вот такая штука:
Естественно! char s[255] - это массив, а char s это просто переменная и индекса у неё нет.

Символ '|' это побитовое 'или', логическое - '||'

И последнее, вы должны перебирать только количество введённых символов, а не все 255 символов.

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
#include <iostream>
#include <cstring>
#include <cctype>
 
using namespace std;
 
int main()
{
   setlocale(LC_ALL, "Russian");
   char s[255];
   int h; // Опр. есть ли цифра в строке, если есть, то 1
   int w; // количество цифр
   char y = 'y';
 
   while (y == 'y')
   {
      cout << endl << "Введите строку: ";
      cin >> s;
      w = 0;
      h = 0;
      for (unsigned i = 0; i < strlen(s); i++)
      {
         if (('0' <= s[i]) && (s[i] <= '9'))
         {
            h = 1;
            w++;
         };
 
      };
      if (h == 1)
      {
         cout << "Данная строка содержит цифры. Количество: " << w << endl;
      }
      else
      {
         cout << "Данная строка не сод. цифр" << endl;
      }
 
      cout << endl << "Продолжить? (да - y): ";
      cin >> y;
   }
 
   return 0;
}
Поиск цифр в строке
1
Luxmunx
2 / 2 / 0
Регистрация: 05.11.2012
Сообщений: 86
14.04.2013, 17:33  [ТС] #3
Стараюсь не использовать в больших программах

Ой, точно. Я со строками в паскале перепутал. Недавно с паскаля пересел на Си просто, запомню

А что у вас значит вот эта строка? "(('0' <= s[i]) && (s[i] <= '9'))" - никак понять не могу =(

И в чем разница если я буду перебирать 255 символов или strlen(s)?
После моих введенных 88888 еще разве что-то содержится дальше?
0
kazak
3051 / 2372 / 160
Регистрация: 11.03.2009
Сообщений: 5,437
Завершенные тесты: 1
14.04.2013, 17:39 #4
Цитата Сообщение от Luxmunx Посмотреть сообщение
А что у вас значит вот эта строка? "(('0' <= s[i]) && (s[i] <= '9'))" - никак понять не могу =(
Определение является ли s[i] цифрой. Так то символы в компьютере кодируются числами

Добавлено через 1 минуту
Цитата Сообщение от Luxmunx Посмотреть сообщение
И в чем разница если я буду перебирать 255 символов или strlen(s)?
Может оказаться, что пользователь ввел строку меньшей длины.
1
Luxmunx
2 / 2 / 0
Регистрация: 05.11.2012
Сообщений: 86
14.04.2013, 17:49  [ТС] #5
я не совсем понимаю как она работает, эта строка)


А меньше я и ввожу же - "88888". Просто откуда показывается 3 цифры, когда я ввожу "y" только ?
0
kazak
3051 / 2372 / 160
Регистрация: 11.03.2009
Сообщений: 5,437
Завершенные тесты: 1
14.04.2013, 18:00 #6
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Luxmunx Посмотреть сообщение
А меньше я и ввожу же - "88888". Просто откуда показывается 3 цифры, когда я ввожу "y" только ?
В первом цикле в массив записывается следующие значения
'8', '8', '8', '8', '8', '\0', "оставшиеся элементы случайный мусор"
Во втором цикле
'y', '\0', '8', '8', '8', '\0', "оставшиеся элементы случайный мусор"
ну а поскольку, Вы проходите полностью весь массив, не учитывая сколько пользователь ввел символов, получаете такой результат. Причем "случайный мусор" в конце массива тоже может содержать цифры, и он тоже будет учитываться.
1
Luxmunx
2 / 2 / 0
Регистрация: 05.11.2012
Сообщений: 86
14.04.2013, 18:02  [ТС] #7
ого, я думал, что массив перезаписывается и в конце ничего нет Спасибо большое!
0
14.04.2013, 18:02
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.04.2013, 18:02
Привет! Вот еще темы с ответами:

Вычислить сумму цифр в строке - C (СИ)
Задали в инсте элементарную задачку, не могу решить. Позже засяду за учебники, сейчас времени нет. 1. Дана символьная строка, допустим...

Определить количество цифр в строке символов. - C (СИ)
строка. Определить количество цифр в строке символов.

Количество цифр и чисел в символьной строке S - C (СИ)
Добрый день Мне надо написать програму которая будет вычеслять количество цифр и чисел в символьной строке S. Как поссчитать количество...

Замена в строке последовательности от 7 до 10 цифр на прочерки - C (СИ)
Господа, второй день не получается задание. Нужна Ваша помощь. Надо заменить в строке последовательности от 7 до 10 цифр на прочерки. ...


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

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

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