• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Program wypisujący wyrazy w kolumnie które zaczynają się i kończą na tą samą literę

Aruba Cloud - Virtual Private Server VPS
+1 głos
696 wizyt
pytanie zadane 9 kwietnia 2021 w C i C++ przez Aleksander Luby Nowicjusz (160 p.)

Dzień dobry, robię program z jednego zadania, podpunkt a to prościzna ale przy b dostaje już szewskiej pasji, ponieważ robię go już jakieś 4 godziny i cały czas nie wychodzi ktoś mógłby pomóc. 

Polecenie na obrazku

Poniżej mój nieszczęsny kod: 

#include <iostream>
#include <string>
	using namespace std;
	string wyrazy;
	string porownanie;
	int w = 0;
	int u;
int main()
{
	//Podpunkt a
	cout<<"Wprowadz ciag znakow, wypisze je w kolumnie"<<endl;
	
	
	getline(cin, wyrazy);
	
	for (int i = 0; i < wyrazy.size(); i++)
	{
		cout<<wyrazy[i]<<endl;
	}
	
	//Podpunkt b
	
	cout<<"Teraz wypisze wyrazy, w ktorych pierwszy znak jest rowny ostatniemu"<<endl;

for (int a=0; a< wyrazy.size(); a++)
	{
		if (wyrazy[w] != ' ')
		{
		 porownanie = wyrazy[w];
		 u = w;
		for(w; w < wyrazy.size(); w++)
		{
			if(wyrazy[w]==' ')
			{
				if(wyrazy[w-1] == porownanie[0])
				{
					for( u; u < w; u++)
					{
						cout<<wyrazy[u]<<endl;
					}	
				}
				
				else
				{
					continue;
				}
			}
			
			else if (w == wyrazy.size()-1)
			{
				continue;
			}	
			
			else
			{
				continue;
			}
			
		}	
			break;
		}
		
		else
		{
			w++;
		}
	} 
			

	return 0;	
}

 

komentarz 9 kwietnia 2021 przez tangarr Mędrzec (155,140 p.)
Zacznij od poprawy punktu a.

Program ma dzielić wpisane zdanie na wyrazy i wypisywać każdy z wyrazów w osobnej linii.
komentarz 9 kwietnia 2021 przez Aleksander Luby Nowicjusz (160 p.)

Dobra poprawiłem podpunkt a, teraz całość wygląda tak:

 

#include <iostream>
#include <string>
    using namespace std;
    string wyrazy;
    string porownanie;
    int w = 0;
    int u;
int main()
{
    //Podpunkt a
   cout<<"Wprowadz ciag znakow, wypisze je w kolumnie"<<endl;
    
    
    getline(cin, wyrazy);
    
    for (int i = 0; i < wyrazy.size(); i++)
    {
        if(wyrazy[i] == ' ')
        {
            cout<<endl;
        }
        else if(i == wyrazy.size()-1)
        {
        
        cout<<wyrazy[i]<<endl;
    }
        else
        {
            cout<<wyrazy[i];
        }
        
    }
     
    //Podpunkt b
     
    cout<<"Teraz wypisze wyrazy, w ktorych pierwszy znak jest rowny ostatniemu"<<endl;
 
for (int a=0; a< wyrazy.size(); a++)
    {
        if (wyrazy[w] != ' ')
        {
         porownanie = wyrazy[w];
         u = w;
        for(w; w < wyrazy.size(); w++)
        {
            if(wyrazy[w]==' ')
            {
                if(wyrazy[w-1] == porownanie[0])
                {
                    for( u; u < w; u++)
                    {
                        cout<<wyrazy[u]<<endl;
                    }   
                }
                 
                else
                {
                    continue;
                }
            }
             
            else if (w == wyrazy.size()-1)
            {
                continue;
            }   
             
            else
            {
                continue;
            }
             
        }   
            break;
        }
         
        else
        {
            w++;
        }
    } 
             
 
    return 0;   
}

 

komentarz 9 kwietnia 2021 przez Aleksander Luby Nowicjusz (160 p.)

DObra zrobiłem w taki sposób, jakby ktoś mógł powiedzieć czy jest dobrze, bo mnie w konsoli wychodzi dobrze, ale mogłem wszystkiego nie sprawdzić

 

#include <iostream>
#include <string>
	using namespace std;
	string wyrazy;
	string porownanie;
	int petla = 0;
int main()
{
	//Podpunkt a
	cout<<"Wprowadz ciag znakow, wypisze je w kolumnie"<<endl;
	
	
	getline(cin, wyrazy);
	
	for (int i = 0; i < wyrazy.size(); i++)
	{
		if(wyrazy[i] == ' ')
		{
			cout<<endl;
		}
		else if(i == wyrazy.size()-1)
		{
		
		cout<<wyrazy[i]<<endl;
	}
		else
		{
			cout<<wyrazy[i];
		}
		
	}
	
	//Podpunkt b
	
	cout<<endl<<"Teraz wypisze wyrazy, w ktorych pierwszy znak jest rowny ostatniemu"<<endl;

	for(int w=0; w < wyrazy.size(); w++)
	{
		if(wyrazy[w] == ' ')
		{
			if(wyrazy[petla] == wyrazy[w-1])
			{
			
			for(petla;petla < w; petla++)
			{
				cout<<wyrazy[petla];
			}
			cout<<endl;
			petla = w+1;
			}
			else
			{
				petla = w+1;
			}
		}
		
		else if(w == wyrazy.size()-1)
		{
			for(petla;petla < w; petla++)
			{
				cout<<wyrazy[petla];
			}
			cout<<wyrazy[petla];
		}	
		
		
	}
	


return 0;
}

 

1
komentarz 10 kwietnia 2021 przez j23 Mędrzec (195,240 p.)
edycja 10 kwietnia 2021 przez j23

Można prościej:

#include <iostream>
#include <string>

int main() 
{
    std::string w, result;
    
    while (std::cin >> w) {
        std::cout << w << '\n';
        if(w.front() == w.back()) (result += w) += '\n'; 
    }
    
    std::cout << result;
}

P.S. nie definiuj zmiennych (w domyśle) lokalnych poza funkcją - to bardzo zły styl.

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

+1 głos
1 odpowiedź 339 wizyt
0 głosów
1 odpowiedź 855 wizyt
0 głosów
1 odpowiedź 333 wizyt
pytanie zadane 8 października 2016 w PHP przez ThePatrykOOO Dyskutant (8,400 p.)

93,335 zapytań

142,331 odpowiedzi

322,415 komentarzy

62,670 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...