ciag string z liczbami i literami

0

Dalej mam problem z tym zadaniem, teraz ladnie dzieli na trzy ale wyświetla mi litery, a chodzi mi o to żeby z całego wczytanego ciągu wyświetlało w ten sposób XXX XXX XXX tylko cyfry.

#include<iostream>
#include<string>



using namespace std;

int main()
{
    string s;
    string t;
    string t1;
    string t2;
    while(cin>>s){
                  for(int i = 0; i<=s.length()-1; i++)
                  {
                          if((s[i]>='0') && (s[i]<='9'))
                  
                          t=s.substr(0,3);
                          t1=s.substr(3,3);
                          t2=s.substr(6,3);
                          
                          }
                  
                  cout<<t<<" "<<t1<<" "<<t2;
                  
                  
                  
                  
                  }
    
    }
0
#include <iostream>
#include <string>

using namespace std;

int main()
{
	string lancuch;

	cin >> lancuch;

	for(int i = 0; i < lancuch.length(); i++)
	{
		static int licznik;
		if(lancuch[i] >= '0' && lancuch[i] <= '9')
		{
			licznik++;
			cout << lancuch[i];
			if(!(licznik % 3))
				cout << " ";
		}
	}

	cout << endl;

	system("pause");
	return 0;
}

Popatrz co robi mój program, nie dzielę stringa tak jak ty, bo wtedy dzielisz go razem z liczbami jak i z literami, tylko sprawdzam każdy znak pokolei czy jest liczba, jeśli jest, to wypisuje, a co 3 wystapienia liczb wpisuje spację.
Wyprobuj dla stringa: dac2cacw87cawca9wafdz0a9sd77sdw2

0

super dzięki jeszcze tylko małe pytanie jak wczytać string z białymi spacjami tj as5 sa sa 55 sa tak aby nie przerywało po pierwszym białym znaku wiem,że można użyc getline lub get alecoś mi to nie wychodzi, uczę się więc to może głupie pytanie ale cóż

0

getline(cin, lancuch);

0

a jeszcze jedno pytanie bez tej statycznej int licznik da się to zrobić, to już tak gwoli wiadomości bo program działa świetnie, dzięki

0

Owszem

#include <iostream>
#include <string>
 
using namespace std;
 
int main()
{
        string lancuch;
 
        cin >> lancuch;

        int licznik = 0; 
        for(int i = 0; i < lancuch.length(); i++)
        {
                if(lancuch[i] >= '0' && lancuch[i] <= '9')
                {
                        licznik++;
                        cout << lancuch[i];
                        if(!(licznik % 3))
                                cout << " ";
                }
        }
 
        cout << endl;
 
        system("pause");
        return 0;
}

Static powoduje, że zmienna jest tworzona na stercie (nie na stosie) i jest zainicjalizowana początkową wartością równą 0. Jeżeli chcesz wyciągnąć liczbę statyczną z pętli, to musisz ją zainicjalizować wcześniej.

0

Poprzednie jest nie poprawne ! spróbujcie ciąg 123457890
ponieważ poprzednie w tym przypadku zostawia chociażby spacje na końcu ! jak zamiast dacie cout << " " (spacji dacie asterix) to sami zobaczycie ...

Oto poprawne rozwiązanie ... Jeśli się myslę chętnie wysłucham uwag .. Omegą to ja na pewno nie jest ;)

#include <iostream>
#include <string>

using namespace std;

int main()
{
string s;
int lwp=0;
cin >> s;

for(int i = 0; i < s.length(); i++)
{
 if(s[i] >= '0' && s[i] <= '9')
  {
    if ( (lwp % 3 == 0) && (lwp>0) ) cout << "+";
    cout << s[i];
    lwp++;
  }
}
cout << endl;
return 0;
}

 

1 użytkowników online, w tym zalogowanych: 0, gości: 1