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

Узнай цену своей работы

Формулировка задачи:

Добрый день! Сейчас сижу и никак не могу понять почему у меня не работает как положено мой код:
#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 - у меня показывается вот такая штука:

Решение задачи: «Поиск цифр в строке»

textual
Листинг программы
#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. Подключение необходимых библиотек для работы с локалью, вводом/выводом и строками
  2. Установка русской локали
  3. Объявление переменной типа char для хранения строки
  4. Объявление двух переменных типа int: h (для проверки наличия цифр в строке), w (для подсчета количества цифр)
  5. Объявление переменной типа char для проверки условия продолжения программы
  6. Ввод строки с помощью функции cin
  7. Очистка переменных h и w перед каждой проверкой строки
  8. Проверка каждого символа строки на предмет принадлежности к цифрам
  9. Если символ является цифрой, то увеличение значения переменной w и установка значения h равным 1
  10. Вывод сообщения о количестве цифр в строке
  11. Если значение переменной h равно 1, то вывод сообщения о наличии цифр в строке и их количестве
  12. Если значение переменной h не равно 1, то вывод сообщения об отсутствии цифр в строке
  13. Ввод символа для продолжения программы с помощью функции cin
  14. Повторение шагов с 6 по 13 до тех пор, пока пользователь не введет n

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.6 из 5
Похожие ответы