Esercizio cornici

di il
6 risposte

Esercizio cornici

Ciao a tutti!
Sono nuovo da queste parti.. spero di rispettare le regole per postare un post..
Allora io sono fermo nel cercare di fare questo esercizio in linguaggio C.

in poche parole devo creare delle cornici di questo tipo, da inviare ad stdout.
per n = 0:

+

per n = 2 invece:

+---+
|+-+|
||+||
|+-+|
+---+
(ops! non è molto centrato.. ma spero abbia reso il concetto)
A seconda del variare di n devo realizzare n cornici intorno al +.

il mio codice è questo:

#include <stdio.h>

void cornici(unsigned int n)
{
	unsigned int i = 0;
	unsigned int j = 0;

	for (i = 0; i <= 2 * n; i++)
	{
		if (i == n)
		{
			for (j = 0; j < 2 * n + 1; j++)
			{
				if (i == j)
					printf("+");
				else
					printf("|");
			}
			printf("\n");
		}

		if (i < n)
		{
			for (j = 0; j < 2 * n + 1; j++)
			{
				if (i == j || (i + j) == 2 * n)
					printf("+");
				
				
			}
			printf("\n");
		}
		
	}
}

int main(void)
{
	unsigned n = 2;
	cornici(n);
}
come potete vedere per i < n il ciclo for non è finito.
Praticamente non riesco a fargli stampare le quattro | che stanno ai lati
mi potreste dare un piccolo suggerimento?

6 Risposte

  • Re: Esercizio cornici

    Scusami ti dispiace ripetere il testo?? Non ho capito
  • Re: Esercizio cornici

    Si scusami te se sono stato un po' impreciso ..
    Allora il testo è il seguente (lo scrivo come l'ha scritto il prof così è più chiaro):

    Nel file cornici.c implementare la definizione della funzione :

    extern void cornici ( unsigned int n);

    La funzione deve inviare a stdout un + circondato da n cornici con '|' sui lati verticali e '-' sui lati orizzontali. Ad esempio chiamando la funzione con n = 0, la funzione deve inviare su stdout solo il centro :

    +

    Chiamando la funzione con n = 2, la funzione deve inviare su stdout :
    
    +---+
    |+-+|
    ||+||
    |+-+|
    +---+
    
    Spero che sia più chiaro adesso
  • Re: Esercizio cornici

    C'è qualcuno ??
  • Re: Esercizio cornici

    Ho scritto qualcosa che non andava oppure ho postato male il post per non meritare l'attenzione di nessuno ?
  • Re: Esercizio cornici

    Non hai scritto nulla di strano, tranquillo.
    Il problema e' stato spiegato in modo chiaro.

    Vediamo di darti una dritta su come risolvero.

    Ci sono almeno due modi: uno semplice ed uno complicato.

    Il modo semplice e' questo:

    invece di scrivere direttamente sullo schermo (che corrisponderebbe al modo complicato), ti crea in memoria una matrice di caratteri di (K x K) elementi.

    Quanto deve valere K? E' semplice ...

    A questo punto disegni le cornici all'interno della tua matrice. Questo e' semplice perche' puoi accedere alla matrice per righe e colonne, andando avanti ed indietro, senza nessun problema

    Ma non solo, puoi anche sovvrascrivere piu' volte la stessa cella con caratteri diversi.
    La cosa importante e' che alla fine tu abbia riempito correttamente la tua matrice.

    A questo punto, stampi la matrice sullo schermo.

    Se non sai allocare la matrice in memoria, puoi sempre allocarla nello stack o anche staticamente (termine alternativo per dire globalmente), basta che la fai abbastanza grande.

    Ovviamente, quando la stampi, devi stampare SOLO K caratteri per K righe.
  • Re: Esercizio cornici

    Ciao! Grazie della gentilezza e per avermi risposto.

    Forse ho capito quello che intendi. Il metodo semplice sarebbe quello di creare una matrice KxK, dove K nel mio caso sarebbe uguale a 2*n, partendo da 0.

    Ma volevo chiederti una cosa...
    Posso creare la matrice in questo modo?
    
    unsigned int k = 2*n;
    char *matrice;
    matrice = malloc( sizeof(char) * k * k);
    
    Se è giusta, il problema dopo è riempirla.
    Perché riesco a metterci i + perché seguono una logica ( se i == j metto il +, se (i + j) == k metto il +)
    Il problema arriva quando devo inserire le '|' e i '-' ...
Devi accedere o registrarti per scrivere nel forum
6 risposte