Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.03.2010, 20:26   #1
anybkarnak
Пользователь
 
Аватар для anybkarnak
 
Регистрация: 27.11.2009
Сообщений: 12
По умолчанию Прога со строками и цифрами

Дана строка, содержащая буквы и цифры. Разработать программу, которая будет вычислять сумму чисел, образованных цифрами в строке. Например, для строки “asdd100 fsdf 20 hghg 5 ghg” это значение равно 125.

моя программа выводит только первое число, а не сумму, подскаэите пожалуйста, как это исправить
суть программы: найти числа, и сложить. ищет оно их так.. от буквы до буквы - число, но находит первое и всё=((
Вижуал студио 8

Код:
#include "stdafx.h" 
#include <iostream>
#include <string.h>
#include <conio.h>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
	char string[99], *sl, word[20];
	int s, summa=0,a ;
	cout<<"Please, enter string"<<endl;
	cin.getline(string,99);
	while(strlen(string)>1)
	{
		sl=strrchr(string,' '); //находим место вхождения пробела
		if(sl==0)
		{
			sl=string;
		}
		strcpy(word,sl);// 
		*sl='\0';
//a=strlen(word);
do
{
	s=atof(word);
	strrev(word);
			word[strlen(word)-1]='\0';
			strrev(word);
}while(s==0&&strlen(word)!=0);
	
		summa+=s;
}
		
		

		
	cout<<summa<<endl;
	getch();
	return 0;
}
anybkarnak вне форума Ответить с цитированием
Старый 08.03.2010, 21:19   #2
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

держи
Код:
#include "stdafx.h" 
#include <iostream>
#include <string.h>
#define SIZE 255

int toInt(std::string s){
    int sum=0;
    for(int i=0; i<(int)s.size(); i++){
            sum*=10;
            sum+=s[i]-48;
    }
    return sum;
}

int main(void)
{
    char s[SIZE];
    std::cin.getline(s, SIZE);
    std::string tmp;
    int sum=0;
    for(int i=0;i<strlen(s);i++){
            if(s[i] >='0' && s[i] <='9'){
                    while(s[i] >='0' && s[i] <='9')
                        tmp+=s[i++];                  
                    sum+=toInt(tmp);
                    tmp="";
            }
    }      
    
    std::cout << "Sum: " << sum;
    std::cin.get();
    return 0;
}

Последний раз редактировалось NiCola999; 08.03.2010 в 21:27.
NiCola999 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка столбца с цифрами San4o SQL, базы данных 4 20.01.2010 15:15
Работа с цифрами в текстовых строках Azz100 Microsoft Office Excel 4 16.12.2009 15:49
Отступ между цифрами в консоле Golovastik Общие вопросы C/C++ 4 15.07.2009 23:24
Названия столбцов стали цифрами. Flake Microsoft Office Excel 2 06.09.2008 16:42
Работа с натуральными цифрами в Делфи Cartman18 Помощь студентам 4 16.04.2008 14:38