[C] Zamiana ciągu spacji na jedną spację

MlodyMatematykAmator
Użytkownik
Użytkownik
Posty: 55
Rejestracja: 23 mar 2019, o 17:45
Płeć: Mężczyzna
wiek: 19
Lokalizacja: Kraków
Podziękował: 16 razy

[C] Zamiana ciągu spacji na jedną spację

Post autor: MlodyMatematykAmator »

Witam, zacząłem się uczyć języka programowania C i mam problem z pewnym zadaniem. Polecenie brzmi, abym zamienił ciągi spacji między wyrazami na jedną spację. Mogę używać funkcju getchar, putchar, while, for, if, printf, ale żadnych else, scanf - ogólnie samych najbardziej podstawowych. Napisałem taki kod:

Kod: Zaznacz cały

#include <stdio.h>

main()
{
    int a,b;

    while((a=getchar()) !=EOF){
        if(a==){
                putchar(a);
                b=getchar();
                if(b==)
                    ;
                if(b !=)
                    putchar(b);
        }
        if(a !=)
            putchar(a);
}
}
Problem jest w tym, że ten program usuwa na oko patrząc w danym ciągu tylko połowę spacji (np. dla "ahoj przygodo" zwraca "ahoj przygodo"), a chodzi mi by usunięte zostały wszystkie spacje oprócz jednej. Nie rozumiem w którym miejscu popełniam błąd, więc proszę o pomoc, wyrozumiałość i wyjaśnienie co robię nie tak.

Pozdrawiam.

-- 25 lip 2019, o 12:33 --

Rozwiązane, temat do usunięcia. -- 25 lip 2019, o 12:45 --Jednak nie naprawione. Już wiem dlaczego program usuwa tylko połowę spacji, ale wciąż nie wiem jak można rozwiązać to zadanie.
Afish
Moderator
Moderator
Posty: 2828
Rejestracja: 15 cze 2008, o 15:45
Płeć: Mężczyzna
Lokalizacja: Seattle, WA
Podziękował: 3 razy
Pomógł: 356 razy

Re: [C] Zamiana ciągu spacji na jedną spację

Post autor: Afish »

Kod: Zaznacz cały

#include <stdio.h>

int main(void) {
	char previousCharacter = '\0';
	char current;
	
	while((current = getchar()) != EOF){
		if(current != previousCharacter || current != ' '){
			putchar(current);
		}
		
		previousCharacter = current;
	}
	
	return 0;
}
MlodyMatematykAmator
Użytkownik
Użytkownik
Posty: 55
Rejestracja: 23 mar 2019, o 17:45
Płeć: Mężczyzna
wiek: 19
Lokalizacja: Kraków
Podziękował: 16 razy

Re: [C] Zamiana ciągu spacji na jedną spację

Post autor: MlodyMatematykAmator »

Dzięki za odpowiedź, ale chodziło mi o zrobienie tego zadania prymitywnie, bez użycia takich rzeczy jak char, nie wiem też co znaczą dwie pionowe kreski koło siebie, a nawet "void".

Już mi się udało, temat do zamknięcia:

Kod: Zaznacz cały

#include <stdio.h>

main()
{
    int a,b;

    while((a=getchar()) !=EOF){
        if(a==){
                putchar(a);
                while((b=getchar())==)
                    ;
                putchar(b);
        }
        if(a !=)
            putchar(a);
}
}
ODPOWIEDZ