Pomoc początkującemu w zadaniu

Pomoc początkującemu w zadaniu
P2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 29
0

Witam, proszę o pomoc w rozwiązaniu zadania, dopiero zaczynam uczyć się języka c, z książką 'Kernighan, Ritchie - Język ANSI C'.

Napisz program który każde słowo wejściowe wypisze w osobnym wierszu.

Nie potrafię uwzględnić przypadku kiedy pojawia się kilka spacji.

Kopiuj
 
#include<stdio.h>

main(){
	int c;
	
	while((c=getchar())!= EOF) {
		if (c == ' '||c=='\t')
			printf("\n");
		else
			putchar(c);
	}
}
Sarrus
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2512
2

Łopatologicznie rzecz biorąc możesz zapamiętać ostatni znak i nie reagować jak poprzedni również był znakiem białym.

Kopiuj
#include<stdio.h>
 
main(){
    int c;
    int lastChar = 0;
    while((c=getchar())!= EOF) {
        if (c == ' '|| c=='\t') {
           if (lastChar != ' ' && lastChar != '\t')
              printf("\n");
        }
        else
            putchar(c);
        lastChar = c;
    }
}
twonek
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2500
2

Albo przejść do nowej linii dopiero jak spotkasz pierwszy niebiały znak po serii białych znaków (poprzedni jest biały oraz obecny nie jest biały).

Kopiuj
#include <stdio.h>
 
int main()
{
    int c;
    int whiteChar = 0;
 
    while ((c=getchar()) != EOF) 
    {
        if (c == ' ' || c == '\t')
        	whiteChar = 1;
        else
        {
            if (whiteChar == 1)
            {
            	printf("\n");
            	whiteChar = 0;
            }

            putchar(c);
        }
    }
    
    return 0;
}
P2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 29
0

Sarrus nie znałem jeszcze tego zapisu

if (lastChar != ' ' && lastChar != '\t')

możesz wytłumaczyc ten zapis ? lastChar = c;

twonek dzięki za rozwiązanie, ciekawa alternatywa

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.