candaluar ha scritto:
Ma scusa, perchè non provi prima come è scritto sul libro?int s; // lunghezza del lato
char c; // carattere di riempimento
scanf( "%c%d", &c, &s );
Ho fatto un pò di testa mia ed alla fine ce l'ho fatta, a meno di un problema...
Il printscreen è questo:
https://prnt.sc/hu3yg
Il codice è questo( dove si vede anche la differenza con la risoluzione dal libro di testo che funziona ma in un ciclo di iterazione non mi è di aiuto...):
// ESERCIZIO 5.20: Stampare un quadrato di un qualunque carattere.
// Modificate la funzione realizzata nell'esercizio 5.19 per formare il quadrato con qualsiasi carattere contenuto nel parametro di tipo carettere fillCharacter. Così, se side è 5 e fillCharacter è "#", questa funzione deve stampare:
// # # # # #
// # # # # #
// # # # # #
// # # # # #
// # # # # #
// Codice sorgente:
#include <stdio.h>
char quadrAsterCaratterePieno( int sideOriz, char fillCharacter );
int main( void ) {
puts( "Questo è un programma che stampa un quadrato pieno di lato a scelta dell'utente formato dal carattere scelto dall'utente.\n" );
printf( "%s", "Si prega di inserire la lunghezza del lato del quadrato pieno: " );
int latoUtente;
scanf( "%d", &latoUtente );
while( latoUtente != 0 ) {
printf( "%s", "Si prega di inserire il carattere dal quale sarà formato il quadrato: " );
char carattere = getchar();
scanf( "%c", &carattere );
puts( "" );
quadrAsterCaratterePieno( latoUtente, carattere );
printf( "%s", "\nSi prega di inserire la lunghezza del lato del quadrato pieno: " );
scanf( "%d", &latoUtente );
}
}
char quadrAsterCaratterePieno( int sideOriz, char fillCharacter ) {
int rigaCounter = 1;
for( int counterVertic = 1; counterVertic <= sideOriz * sideOriz; ++counterVertic ) {
printf( "%c ", fillCharacter );
if( counterVertic == (sideOriz * rigaCounter) ) {
puts( "" );
++rigaCounter;
}
}
}
/*
RISPOSTA DEL LIBRO:
#include <stdio.h>
void square( int side, char fillCharacter );
int main( void ) {
printf( "%s", "Enter a character and the side lenght: " );
int s; // lunghezza del lato
char c; // carattere di riempimento
scanf( "%c%d", &c, &s );
puts( "" );
square( s, c ); // stampa quadrato pieno con carattere specificato
}
// square stampa quadrato pieno di fillCharacter con il lato specificato
void square( int side, char fillCharacter ) {
// ripeti side per il numero di righe
for( unsigned int loop = 1; loop <= side; ++loop ) {
for( unsigned int loop2 = 1; loop2 <= side; ++loop2 ) {
printf( "%c ", fillCharacter );
}
puts( "" );
}
}
*/
Il problema è con i caratteri; à, ò, è, #, etc... con questi caratteri mi da errori negli output... Qui il printscreen:
https://prnt.sc/hu404 https://prnt.sc/hu3zx Inoltre il carattere # non lo riesco proprio a mettere in input ( devo premere alt + gr + # ma non scrive nulla. Per $, £, " funziona.
Grazie