Strona 1 z 1

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

: 25 lip 2019, o 12:58
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.

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

: 25 lip 2019, o 14:32
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;
}

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

: 25 lip 2019, o 14:37
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);
}
}