Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
Luxmunx
2 / 2 / 2
Регистрация: 05.11.2012
Сообщений: 90
1

Поиск цифр в строке

14.04.2013, 13:52. Просмотров 2904. Ответов 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
Ответы с готовыми решениями:

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

Сложение цифр в строке
Здравствуйте. Скажите, пожалуйста, что здесь неправильно char number_1 =...

Перестановка букв и цифр в строке
Друзья! Начал изучать Си, но застрял вот на какой задаче: имеется строка...

Вычислить сумму цифр в строке
Задали в инсте элементарную задачку, не могу решить. Позже засяду за учебники,...

Найти сумму цифр в строке
Найти сумму цифр в строке.

6
anmartex
...
1711 / 1204 / 909
Регистрация: 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 / 2
Регистрация: 05.11.2012
Сообщений: 90
14.04.2013, 17:33  [ТС] 3
Стараюсь не использовать в больших программах

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

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

И в чем разница если я буду перебирать 255 символов или strlen(s)?
После моих введенных 88888 еще разве что-то содержится дальше?
0
kazak
3058 / 2379 / 255
Регистрация: 11.03.2009
Сообщений: 5,438
Завершенные тесты: 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 / 2
Регистрация: 05.11.2012
Сообщений: 90
14.04.2013, 17:49  [ТС] 5
я не совсем понимаю как она работает, эта строка)


А меньше я и ввожу же - "88888". Просто откуда показывается 3 цифры, когда я ввожу "y" только ?
0
kazak
3058 / 2379 / 255
Регистрация: 11.03.2009
Сообщений: 5,438
Завершенные тесты: 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 / 2
Регистрация: 05.11.2012
Сообщений: 90
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

Вывод цифр, содержащихся в строке
Здравствуйте, можете помочь перевести программу на строки, задание такое, нужно...

Вывести количество цифр в строке
Нужно вывести количество цифр в строке. Не понимаю в чем у меня ошибка,...

Вычислить сумму цифр в строке
1) Вычислить сумму цифр в строке вида &quot;1ab23cef05&quot; ( P S строка вводиться с...


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

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

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