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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
WHiTE
1 / 1 / 0
Регистрация: 09.04.2012
Сообщений: 18
#1

Задача на строки и задачи на создание рекурсивной функции - C++

09.04.2012, 19:42. Просмотров 667. Ответов 2
Метки нет (Все метки)

Добрый день, а может быть и вечер.
Возникла проблема с решением задачи.
Условие:Дан текст, содержащий целые числа. Вывести на экран количество чисел в нем.
Я накидал код и он ,собственно, работает, только если в слове встречаются числа, он их не видит.
Например, если дана строка :" 12312 15345 asfas1243a asf333 333"
То при выполении програмы будет куча ошибок, а если числа отделить от слов, то все будет ок.
Несколько раз пробовал написать с помощью isdigit, ничего не вышло. Хотя и уверен, что через него и нужно писать.
Собственно код
Код
#include<iostream>
#include<string>
using namespace std;
int main()
{
   string s;
int n=0,k=1;
int *a=new int[n];
cout<<"Vvedite stroku"<<endl
getline(cin,s);
s=s+' ';
for (unsigned int i-0; i<=s.length(); i++)
if (isalpha(s[i])||isspace(s[i]))

{n++;
a[n-1]=i;
}

for (int i=0; i<n-1;i++)
      if ((a[i+1]-a[i])>1) k++;
cout<<"Kol-vo chisel = "<<k;
return 0;
}

Так-же возникли проблемы с задачами, на составление рекурсивной функции
Нашел кучу примеров в интернете, в том числе, и на этом сайте, но ничего не вышло
Условие:
Разработать функцию, которая для заданного натурального числа N возвращает сумму его цифр. С помощью данной функции вывести на экран только те целые числа отрезка [a,b], у которых сумма чифр числа равна заданному значению.
И еще одна:
Разработать рекурсивную функцию определяющую, является ли заданная строка палиндромом.

PS. Если кто-нибудь откликнется на мою просьбу, прошу, пожалуйста в коде пишите комментарии к действию. Т.к. для меня, на первом плане, стоит задача понять как решать такие задачи, а не просто наличие ее кода.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.04.2012, 19:42     Задача на строки и задачи на создание рекурсивной функции
Посмотрите здесь:

Программa с использованием рекурсивной функции C++
C++ Рекурсивные алгоритмы. Создание рекурсивной функции.
Задача на строки и функции C++
Создание рекурсивной функции, возвращающей значение для вычисления наибольшего размера в одномерном массиве C++
Создание специализации шаблонной функции и задача на std::vector C++
Использование рекурсивной функции C++
Из рекурсивной функции в не рекурсивную C++
C++ Создание потоков в рекурсивной функции
C++ Проверка аргументов рекурсивной функции
Схема рекурсивной функции C++
Не работает оператор return в рекурсивной функции C++
Вызов рекурсивной функции в отдельном потоке C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Gelllius
2 / 2 / 0
Регистрация: 05.06.2013
Сообщений: 11
05.06.2013, 23:13     Задача на строки и задачи на создание рекурсивной функции #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
#include <iostream>
#include <string>
using namespace std;
 
 
bool is_polindrom(string &s, int &l, int &k)
{
    if ((l == k || l<k) && (s[l] == s[k]))
    {
        is_polindrom(s, ++l, --k);
        if (l>k) return true;
    }
 
    if ((l == k || l<k) && (s[l] != s[k])) return false;
}
 
int main()
{
    string s;
    int l = 0;
    cout << "Enter string"<< endl;
    getline (cin, s);
    int k = s.length() - 1;
    if (!(is_polindrom(s, l, k))) cout << "net" << endl;
    else cout << "da"<< endl;
    return 0;
}

щас если найду скину на числа, там коды сравнишь, я то-же самое недавно делал
MrGluck
Ворчун
Эксперт CЭксперт С++
6649 / 3840 / 505
Регистрация: 29.11.2010
Сообщений: 10,154
05.06.2013, 23:24     Задача на строки и задачи на создание рекурсивной функции #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
#include <iostream>
#include <string>
#include <cstddef>
#include <cctype>
 
int main()
{
    std::string str;
    std::getline(std::cin, str);
    int counter = 0;
    bool lastDigit = false;
 
    for (size_t i=0; i < str.length() - 1; i++)
    {
        if (isdigit(str[i]))
            lastDigit = true;
        else if (lastDigit)
        {
            counter++;
            lastDigit = false;
        }
    }
 
    std::cout << "Counter: " << counter << std::endl;
}
Yandex
Объявления
05.06.2013, 23:24     Задача на строки и задачи на создание рекурсивной функции
Ответ Создать тему
Опции темы

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