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

Usuwanie spacji z łańcucha znaków

VPS Starter Arubacloud
0 głosów
2,136 wizyt
pytanie zadane 1 stycznia 2017 w C i C++ przez czujek22 Dyskutant (7,670 p.)

Witam. Robię to zadanie i nie wiem dlaczego sędzia pokazuje błąd. Chodzi o to, że na wejściu może pojawić się 2 linie jako jedno zdanie ?

#include <iostream>
#include <string>
using namespace std;

int main()
{
    string ciag;

    getline(cin,ciag);

    for(int i=0;i<ciag.length();i++)
    {
        if(ciag[i]==' ')
        {
            ciag[i+1] = toupper(ciag[i+1]);
            continue;
        }

        else
            cout<<ciag[i];
    }



    return 0;
}

 

3 odpowiedzi

0 głosów
odpowiedź 1 stycznia 2017 przez Kasztan Dyskutant (8,080 p.)
Zrób kilka spacji na początku i wpisz jakieś słowo z małej litery np:      dupa
komentarz 1 stycznia 2017 przez Kasztan Dyskutant (8,080 p.)
tobie daje wynik Dupa

a powinno być dupa
0 głosów
odpowiedź 1 stycznia 2017 przez timrh Mądrala (6,030 p.)
edycja 2 stycznia 2017 przez timrh

Spróbuj tak:
 

#include <iostream>
#include <string>

using namespace std;

int main()
{
	string ciag;
	bool counted = false;

	getline(cin, ciag);

	for (int i = 0; i<ciag.length(); i++)
	{
		if (ciag[i] != ' ')
			counted = true;
		else
		{
			if (ciag[i + 1] != ' ')
			{
				if(counted) 
					ciag[i + 1] = toupper(ciag[i + 1]);
				else
					counted = true;
			}
			continue;
		}	
		cout << ciag[i];
	}
	return 0;
}
komentarz 1 stycznia 2017 przez czujek22 Dyskutant (7,670 p.)
Usuwa wtedy pierwszą literę zdania, jeśli zacznie się od dużej bez spacji
komentarz 1 stycznia 2017 przez timrh Mądrala (6,030 p.)
edycja 1 stycznia 2017 przez timrh

@czujek22 Faktycznie, poprawiłem kod, spróbuj teraz.smiley

0 głosów
odpowiedź 1 stycznia 2017 przez niezalogowany

printf("Proszę :)\n");

#include<stdio.h>

#define IN 1
#define OUT 0

int main()
{
    int iterator,state,wordWidth;
    char sign,word[10000];
    wordWidth=OUT;
    state=OUT;

    while( (word[wordWidth]=getchar())!='\n' ) /*tu podstaw swój statement końca wczytywania*/
    {
        wordWidth++;
    }
    for( iterator=OUT;iterator<wordWidth;iterator++ )
    {
        if( (word[iterator]!=' ')&&(state==OUT) )
        {
            state=IN;
            if( (word[iterator]>='a')&&(word[iterator]<='z') )
            {
                word[iterator]-=32; /*toUpper*/
            }
            printf("%c",word[iterator]);
        }
        else if( (word[iterator]!=' ')&&(state==IN))
        {
            printf("%c",word[iterator]);
        }
        else if( (word[iterator]==' ')&&(state==IN))
        {
            state=OUT;
        }
    }
    return 0;
}

 

komentarz 1 stycznia 2017 przez timrh Mądrala (6,030 p.)
Bardziej typowe rozwiązanie dla C, niż dla C++ :)
komentarz 2 stycznia 2017 przez niezalogowany
ale działa dobrze :) a kompilator C++ zrozumie i to bo o ile się nie mylę, to te biblioteki są też dostępne w plusie. A do tego program szybciej działa jak te plusiki odejmiesz ;)
komentarz 2 stycznia 2017 przez timrh Mądrala (6,030 p.)
Oj te plusy można usunąć i dać prostego bool'a :p Pisałem to na szybko i tak jakos te c wyszło :)

Podobne pytania

–1 głos
2 odpowiedzi 1,069 wizyt
0 głosów
3 odpowiedzi 2,283 wizyt
pytanie zadane 17 maja 2017 w C i C++ przez ChiriChiri Obywatel (1,260 p.)
0 głosów
1 odpowiedź 253 wizyt
pytanie zadane 4 grudnia 2016 w C# przez acsp Nowicjusz (220 p.)

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 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.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...