Newsgroup: it.comp.lang.c++
Titolo: esercizi da risolvere

Ciao
devo risolvere questi tre esercizi
1)scrivere un programma che copi il suo input sul suo output ,sostituendo
una stringa di uno o piu' spazi con uno spazio signolo
2)sostituendo ad ogni carattere di tabulazione \t, ad ogi backspace \b e ad
ogni backslash \\
mi date qualche dritta?
grazie! :)

mi date qualche dritta?
Prima dicci come lo faresti e poi ti diciamo se va bene o no.
-- 
Marco Barisione (ICQ 84277092)

 
Studia!
E visto che hai parlato di tre esercizi e ne ha spiegati due, dai un 
ripassino anche a matematica.
Ma danno ancora i compiti delle vacanze!?
-- 
Valter Minute
vmi...@inwind.it
 (the reply address of this message is invalid)


Ti do tre risposte:
1) Nei libri di programmazione C e C++, proprio nelle prime pagine, ci sono
vari esempi utili.
2) Comincia a scrivere un programma che copia il suo input sul suo output
senza modificarlo.
Ciao :)

Innanzi tutto grazie per la vostra buona fede e gentilezza, ....non e' che
voglio rubarvi i segreti dell'alta programmazione, ed inoltre
credo che i NG siano luoghi dove scambiare le informazioni, e non posti dove
si va per essere presi per il culo, poi se le mie richieste sono
stupide....mi preoccupero' di creare un ng per le persone ignoranti come
me.....che ne so'  it.comp.gnurant.lang.C++
comunque date le mie scarse conoscenze rispondo cosi'
per il primo esercizio userei
int c;
while(c=getchar())!=EOF)
putchar(c);
in modo da recuperare l'input e passarlo all'output
ma non so come sostituire una stringa di uno o piu' spazi con lo spazio
singolo
innanzi tutto lo spazio singolo che carattere e'?
conosco \t per la tabulazione \n per il new line \\ backspace.....
se poi dovessi contare le linee
int nl;
while(c=getchar())!=EOF)
if(c == '\n');
++nl;
printf("%d",nl);
grazie
p.s. i compiti per le vacanze a 28 anni non li danno piu'

p.s. i compiti per le vacanze a 28 anni non li danno piu'
Nella mia università gli esami ci sono anche a luglio e ci sono anche
persone con più di 28 anni.


 p.s. i compiti per le vacanze a 28 anni non li danno piu'
Comunque ci assomigliano un sacco...  saranno quelli per tuo figlio :-)
-- 
Maurizio Loreti                         
http://www.pd.infn.it/~loreti/mlo.html
Dept. of Physics, Univ. of Padova, Italy          loreti at pd dot infn dot it


ma gli esami non finiscono mai ... !! :-)

 it.comp.gnurant.lang.C++ 
La mia _ironia_ (che può essere considerata anche una presa per il 
culo, non lo nego) non era rivolta a quello che domandavi ma al come 
lo domandavi. Al di là del fatto che il tuo problema fosse 
relativamente banale quello che volevo farti notare (era una presa 
per il culo a fin di bene) era che ci stavi chiedendo di risolvere 
degli esercizi e non di "scambiare informazioni".
Il fatto che tu abbia ripostato questo messaggio con un po' di 
informazioni in più mi fa pensare che la mia ironia è stata 
recepita...
Per auto-punirmi della maldestra ironia e scusarmi posto un po' di 
codice (C e non C++):
int space=0;
int c;
while(c=getchar())!=EOF)
{
    	if ((c==' ')&&(space))
    	    	continue;
    	space=0;
    	switch (c)
    	{
    	    case '\t':
    	    	putchar('\\');
    	    	putchar('t');
    	    	break;
    	    case '\n':
    	    	putchar('\\');
    	    	putchar('n');
    	    	break;
    	    case '\\':
    	    	putchar('\\');
    	    	putchar('\\');
    	    	break;
    	    default:    	    	    
    	    	putchar(c);


 
Da un messaggio su un newsgroup è oggettivamente difficile capire l'età 
visto che non si può segare a metà l'interlocutore e contare gli 
anelli.


 [CODE-CUT]
Traditore del MANIFESTO!!!
8-PPP
-- 
Luc.


Visto che il tuo codice non risolve l'esercizio richiesto, si tratta di un
ulteriore scherzo? O hai dimenticato di assegnare la variabile 'space' ?

 a écrit dans le message news:
ah6g1v$804$1...@serv1.iunet.it...

No,
invece penso che abbia fatto l'inverso qua:
.....
if ((c==' ')&&(space))
         continue;
/*space=0;*/ /* <- se metti 0 non eseguirai mai l'istruzione continue
space = 1;
.....
Maurus

 
Se avessi una vera faccia di bronzo citerei Stanislao Moulinski dicendo: 
"Maledetto Carter mi hai scoperto ancora una volta!"
Avendo una finta faccia di bronzo e avendo già fatto arrabbiare 
abbastanza la nostra amica posto la fix (sperando che il mio 
compilatore/debugger celebrale non sia completamente bollito):
    	if (c==' ')
    	{
    	    	if (space)
    	    	    	continue;
    	    	space=0;


 Valter Minute
Come spesso dice un noto telecronista Mediaset:
"....Non va!"
Anche con questa correzione la tua space non avra' altro valore che 0 in
tutta la durata del programma, per cui non eseguira' mai la continue e
continuera' a aggiungere spazi come un disgraziato.
Rinnovo anche qua la correzione dopo essermi consultato con Peter Norton,
Bill Gates e Linus Torvalds:
.....
if ((c==' ')&&(space))
         continue;
/*space=0;*/ /* <- se metti 0 non eseguirai mai l'istruzione continue
space = 1;
.........
E' stata una dura lotta:
Bill voleva portare il programma in C#, Linus ha copiato il codice per farne
un loader di sistema operativo clone di WindowsXP in barba a Bill e Peter
insisteva per passare l'eseguibile del programma sotto il suo noto antivirus
(noto per essere snello come un dinosauro obeso).
Maurus

 continue space = 1;
Però se metto space a 1 (e non la rimetto mai a 0) verranno ignorati 
tutti gli spazi tranne il primo in assoluto e non solo quelli 
multipli.
(per la correzione mi sono consultato con Shane McGowan, i Modena 
City Ramblers, Helno e Les Negresses Vertes, quindi non garantisco 
nulla e vado a cambiare il CD :)).



[omissis]
Che figura che stiamo a fare eh? Programmino semplice doveva essere???
Ho pensato intensamente a Kernighan e Richie, e durante la trance mi hanno
suggerito il codice.
Eccolo completo e funzionante. Si limita a sostituire gli spazi multipli con
un solo spazio:
#include <stdio.h>
int main()
{
        int c, space=0;
        while((c=getchar())!=EOF)
        {
            if (c==' ') {
                if (space)
                    continue;
                else
                    space = 1;
            } else
                space = 0;
            putchar(c);
        }
        return 0;
}
Naturalmente l'ho compilato e provato prima :)

> > > while(c=getchar())!=EOF)
non e' sbagliato?
non dovrebbe essere while((c=getchar())!=EOF) ??
grazie a tutti

 a écrit dans le message news:
v6CZ8.1698$s74....@twister1.libero.it...

Hai ragione,
il fatto e' che Bill, Peter e Linus mi distraggono per problemi ben piu'
complessi e poi si perdono di vista questi umili dettagli sintattici!
Metti la parentesina e vai.
Maurus