Софтуерно Инженерство
Loading...
+ Нов въпрос
VeselaBorislavova avatar VeselaBorislavova 1 Точки

5 задача от 3 домашно

Имам грешка при сумата. Ако може някой да я погледне и да ми помогне.

#include <iostream>
#include <vector>
#include <string>
#include <sstream>

using namespace std;

int main()
{
    string text;
    getline(cin, text);

    istringstream textIn(text);

    vector<string> words;
    string currentWord;
    while(textIn>>currentWord)
    {
        words.push_back(currentWord);
    }

    vector<int> numbers;
    int sum=0;
    for(int i=0;i<words.size();i++)
    {
        if(words[i]<'A'&&words[i]>'Z'&&words[i]<'a'&&words[i]>'z')
        {
            sum+=words[i];
        }
    }

    ostringstream resultOut;
    resultOut<<sum<<endl;
    cout<<resultOut.str();

    for(int i=0;i<text.size();i++)
    {
        if((text[i]>='A'&&text[i]<='Z')||(text[i]>='a'&&text[i]<'z'))
        {
            cout<<text[i];
            if(text[i+1]==32)
            {
                cout<<" ";
            }
        }
    }

    return 0;
}

Тагове:
0
C++ Fundamentals
TulayTunaeva avatar TulayTunaeva 13 Точки
Best Answer

Аз съм с почти същият проблем ;(((

0
sun_seeker avatar sun_seeker 14 Точки

Оправи ли се със задачата?

0
LASlavtchev avatar LASlavtchev 1 Точки

Мисля, че проблема е тука

vector<int> numbers;
    int sum = 0;
    for (int i = 0; i<words.size(); i++)
    {
        if (words[i] <'A'&& words[i] >'Z'&&words[i] <'a'&&words[i] >'z')
        {
            sum += words[i];
        }
    }

Правиш операции със стрингове, а трябва да са инт.

Но и аз имам проблеми с тия задачи. По долу е моето решение, ама запича на отрицателно число и забих.

#include <iostream>
#include <string>
#include <vector>
#include <sstream>

using namespace std;

int main()
{
	string input_line = "1 2 3 invalid -4";
	//getline(cin, input_line);

	istringstream in(input_line);
	ostringstream out_numbers;
	ostringstream out_words;
	string temporary;
	while (in >> temporary)
	{
		for (int i = 0; i < temporary.size(); i++)
		{
			if (isdigit(temporary[i]) || temporary[i] == '-')
			{
				out_numbers << temporary[i];
			}
			else if (temporary[i] != '-')
			{
				out_words << temporary[i];
			}
		}
	}
	string numbers = out_numbers.str();
	string words = out_words.str();

	unsigned int number;
	vector <int> store_numbers;
	istringstream in_number(numbers);
	while (in_number >> number)//проблема ми е тука.дели там, където има - за отрицателно число
	{
		store_numbers.push_back(number);
	}

	int sum = 0;
	for (int i = 0; i < store_numbers.size(); i++)
	{
		sum += store_numbers[i];
	}
	cout << sum << endl;
	cout << words << endl;
	return 0;
}

 

0