[C] HELP! Stampa rettangolo
Ciao a tutti!
Devo scrivere un programma che stampi un rettangolo la cui cornice sia costituita da caratteri asterisco e la parte interne da caratteri Q. Il numero di linee e di colonne del rettangolo viene deciso a tempo di esecuzione da utente.
come posso fare?
es. 5 righe e 6 colonne
* * * * * *
* QQQQ *
* QQQQ *
* QQQQ *
* * * * * *
[EDIT] ho scritto questo, ma non riesco a far venire la cornice di asterischi
#include
int main ()
{
int i,j, n,m;
printf("Inserire numero linee:\n");
scanf("%d", &n);
printf("Inserire numero colonne:\n");
scanf("%d", &m);
for(i = 1; i <= n; i++){
printf("\n");
printf("*");
for(j =1; j <= m; j++)
printf("Q");
printf("*");
}
printf("\n");
}
Devo scrivere un programma che stampi un rettangolo la cui cornice sia costituita da caratteri asterisco e la parte interne da caratteri Q. Il numero di linee e di colonne del rettangolo viene deciso a tempo di esecuzione da utente.
come posso fare?

es. 5 righe e 6 colonne
* * * * * *
* QQQQ *
* QQQQ *
* QQQQ *
* * * * * *
[EDIT] ho scritto questo, ma non riesco a far venire la cornice di asterischi
#include
int main ()
{
int i,j, n,m;
printf("Inserire numero linee:\n");
scanf("%d", &n);
printf("Inserire numero colonne:\n");
scanf("%d", &m);
for(i = 1; i <= n; i++){
printf("\n");
printf("*");
for(j =1; j <= m; j++)
printf("Q");
printf("*");
}
printf("\n");
}
Risposte
Sai fare un programma che stampi il seguente rettangolo?
es. 5 righe e 6 colonne
QQQQQQ
QQQQQQ
QQQQQQ
QQQQQQ
QQQQQQ
es. 5 righe e 6 colonne
QQQQQQ
QQQQQQ
QQQQQQ
QQQQQQ
QQQQQQ
Si ho modificato ora la domanda sopra
mi manca giusto la cornice..
come posso fare in modo che la prima e l'ultima riga siano solo composte da asterischi?

come posso fare in modo che la prima e l'ultima riga siano solo composte da asterischi?
Il tuo programma dovrebbe avere la forma:
dove
Insomma dovrebbe avere una forma del tipo:
dove per la condizione ci devi ragionare tu.
for(int i = 0; i < N; ++i) { for(j = 0; j < M; ++j) { stampa(i,j); } printf("\n"); }
dove
stampa(i,j)stampa a video * se ti trovi nella cornice e Q altrimenti.
Insomma dovrebbe avere una forma del tipo:
if( in_cornice(i,j) ) printf("*"); else printf("Q");
dove per la condizione ci devi ragionare tu.
ok grazie mille!
un'ultima cosa, se volessi far scegliere all'utente i caratteri da inserire non bastano due scanf di due char che sostituiranno poi i caratteri * e Q?
un'ultima cosa, se volessi far scegliere all'utente i caratteri da inserire non bastano due scanf di due char che sostituiranno poi i caratteri * e Q?
Ti bastano due scanf, due variabili e devi modificare adeguatamente i printf.
"Bush":
ok grazie mille!
un'ultima cosa, se volessi far scegliere all'utente i caratteri da inserire non bastano due scanf di due char che sostituiranno poi i caratteri * e Q?
Consiglio mio: fai prima il programma richiesto, questa è una modifica di seconda mano molto semplice che viene dopo. A tal proposito ti suggerisco: pensa maggiormente alla condizione che ti fa stampare l'uno o l'altro carattere (non è complesso).
Ho provato a far cosi ma non funziona....
#include
int main ()
{
int m,n,i,j;
char car_1, car_2, spazio;
printf("Inserire numero righe:\n");
scanf("%d", &n);
printf("Inserire numero colonne:\n");
scanf("%d", &m);
printf("Inserire carattere esterno:\n");
scanf("%c", &car_1);
scanf("%c", &spazio);
printf("Inserire carattere interno:\n");
scanf("%c", &car_2);
scanf("%c", &spazio);
for(i = 1; i++<= s; ){
printf("\n");
printf("%c", car_1);
for(j =1; ++j < m; )
printf("%c", car_2);
printf("%c", car_1);
}
printf("\n");
}



#include
int main ()
{
int m,n,i,j;
char car_1, car_2, spazio;
printf("Inserire numero righe:\n");
scanf("%d", &n);
printf("Inserire numero colonne:\n");
scanf("%d", &m);
printf("Inserire carattere esterno:\n");
scanf("%c", &car_1);
scanf("%c", &spazio);
printf("Inserire carattere interno:\n");
scanf("%c", &car_2);
scanf("%c", &spazio);
for(i = 1; i++<= s; ){
printf("\n");
printf("%c", car_1);
for(j =1; ++j < m; )
printf("%c", car_2);
printf("%c", car_1);
}
printf("\n");
}
Intanto il numero delle righe è $n$ e non $s$ come hai scritto te le primo ciclo for. Poi: seppur apparentemente corretto quell'uso dell'incremento in notazione prefissa e postfissa direttamente nella condizione del for mi sembra che riduca la leggibilità del programma. Hanno messo una terza parte nel for apposta per questo tipo istruzioni... Poi: che output ti dà

A me sembra di averti fornito un codice sensato, seppur incompleto. Sarebbe opportuno che lo guardassi e capissi che fa per correggere i tuoi errori.
P.S.: Metti il codice all'interno del tag CODE:
P.S.: Metti il codice all'interno del tag CODE:
[code][/code]