Ajuda Programa Simples em C

sinomen

Power Member
Boas,

Tou com um problema simples mas não faço ideia de como resolver.

Tenho de fazer um programa, que seja aceite pelo MOOSHACK, que le uma sequencia de linhas e substitui as vogais por '_' e da o nr de substituiçoes feitas...

O problema está na forma como leio a sequencia de linhas. Se fosse so uma linha o meu programa ja funcionava a 100%...o problema é k que nao sei o numero de linhas que serão lidas.

Deixo aqui um exemplo:

Exemplo de entrada:

Ninguém me dê,
Ninguém me peça!
Ninguém me diga!


Saída correspondente:

N_ng__m m_ d_,
N_ng__m m_ p_ç_!
N_ng__m m_ d_g_!
17

COdigo:

aqui leio a linha ate ser dado um enter...agora como adaptar isto para ler uma sequencia de linhas é que nao sei.

int main(){
char l[1000];
scanf("%[^\n]s",l);
setbuf(stdin, NULL);
leLinhas(l);
return 0;
}
 
Última edição:
Existe algum caracter específico no qual terminar a leitura? É que neste momento usas o \n para isso.

nao nos é dito como termina a leitura. Vou colocar enunciado completo:

O seu programa deve ler uma sequência de linhas e copiá-las para o stdout, substituindo todas as vogais pelo caracter '_'.

Deve ainda escrever uma linha adicional indicando o número de substituições feitas.

Exemplo de entrada:


Ah, que ninguém me dê piedosas intenções,
Ninguém me peça definições!
Ninguém me diga: "vem por aqui"!
A minha vida é um vendaval que se soltou,
É uma onda que se alevantou,
É um átomo a mais que se animou...
Não sei por onde vou,
Não sei para onde vou
Sei que não vou por aí!


Saída correspondente:


_h, q__ n_ng__m m_ d_ p__d_s_s _nt_nç__s,
N_ng__m m_ p_ç_ d_f_n_ç__s!
N_ng__m m_ d_g_: "v_m p_r _q__"!
_ m_nh_ v_d_ _ _m v_nd_v_l q__ s_ s_lt__,
_ _m_ _nd_ q__ s_ _l_v_nt__,
_ _m _t_m_ _ m__s q__ s_ _n_m__...
N__ s__ p_r _nd_ v__,
N__ s__ p_r_ _nd_ v__
S__ q__ n__ v__ p_r __!
112
 
Em C o fim do input (ficheiro ou stream) é "assinalado" por EOF (End of File).

Deixo aqui um exemplo do que precisas:

Código:
int main(){
    char c;
    int total = 0;
    while((c = getchar()) != EOF){
        if(isVogal()){[INDENT]        printf("_");[/INDENT]
[INDENT]        total++;[/INDENT]
        } else {
            printf("%c", c);
        }
    }
    printf("\n%d\n", total);
    return 0;
}
 
Back
Topo