LINGUAGGIO C: Triangolo rettangolo con asterischi

di il
8 risposte

LINGUAGGIO C: Triangolo rettangolo con asterischi

Ciao a tutti, sto veramente impazzendo.. allora ho provato in tutti i modi a farlo ma non riesco.. ho cercato risposte nel forum ma non trovo soluzione. Spero possiate aiutarmi.
Il problema è: "Scrivere un programma che stampi a video un triangolo rettagolo di "*" la cui base e altezza siano lette da tastiera".
Io ho provato, me lo stampa, ma la base non so come inserirla nel codice. Quindi, ovviamente, stampa il triangolo di asterischi rispetto all'altezza inserita da me, ma rispetto alla base no (anche se ho messo la gets relativa). Perciò il numero di asterischi "aggiuntivi" sono "limitati" dal primo valore immesso da tastiera e la base inserita da me è come se non la richiedesse.
 #include <stdio.h>
#include <stdlib.h>

int main () 
{
    char s[80];
    int altezza, base, i, j;
    gets(s);
    altezza = atoi(s);
    gets(s);
    base = atoi(s);
   
   for(i=0; i<altezza; i++) {
   for(j=0; j<i; j++) 
   printf("*");
   printf ("*\n");
   
   }
   return 0;
}

8 Risposte

  • Re: LINGUAGGIO C: Triangolo rettangolo con asterischi

    Per ogni riga del triangolo{
    Stampi *
    Stampi "n"-1 spazi
    Stampi *
    Stampi \n
    }

    "n" = larghezza * riga selezionata / altezza

    altezza aumenta verso il basso
  • Re: LINGUAGGIO C: Triangolo rettangolo con asterischi

    Un ragionamento simile si può usare per ogni valore di larghezza, ma PRIMA setti un'array di [larghezza] elementi usando una formula ricavabile da quella di prima e poi usi dei cicli per stampare
  • Re: LINGUAGGIO C: Triangolo rettangolo con asterischi

    Ma quindi devo settare per forza l'array?? perchè questo esercizio me lo propone prima dell'introduzione degli array.. come si potrebbe fare altrimenti??
  • Re: LINGUAGGIO C: Triangolo rettangolo con asterischi

    Usa il suggerimento nella prima risposta

    Altrimenti ci sarebbero molti altri metodi più complicati che ti porterebbero allo stesso risultato...

    PS: quello nella prima istruzione è un array
  • Re: LINGUAGGIO C: Triangolo rettangolo con asterischi

    Basta che calcoli quanti asterischi devi stampare per ogni altezza.
    ovvero ad altezza zero avrai 1 asterisco, ad altezza utente avrai x asterischi base utente.
    Ad ogni ciclo for che invochi per altezza avrai dentro prima una formula che ti calcola il numero di asterischi da stampare, poi un ciclo for che te li stampi.

    (potresti usare due variabili double per mantenere di precisione)
  • Re: LINGUAGGIO C: Triangolo rettangolo con asterischi

    Niente, non riesco proprio! ad un certo punto ero quasi riuscita usando il primo metodo ma qualcosa era comunque sbagliata.. cioè inserendo tipo 4 e 3 (rispettivamente altezza e base) mi usciva un triangolo con 4 asterischi di altezza e poi la riga i-1 era da 3 asterischi e la quarta riga pure, non so se era giusto ma ho perso tutto...e non ricordo quello che avevo fatto (cancellando e provando in altri modi)..
  • Re: LINGUAGGIO C: Triangolo rettangolo con asterischi

    void triangolo(int base, int altezza)
    {
    	int i, j;
    	int t;
    
    	for (i = 0; i < altezza - 1; i++)
    	{
    		printf("*");
    
    		t = base * i / altezza;
    		if (t)
    		{
    			for (j = 0; j < (t - 1); j++)
    			{
    				printf(" ");
    			}
    			printf("*");
    		}
    
    		printf("\n");
    	}
    
    	for (j = 0; j < base; j++)
    	{
    		printf("*");
    	}
    }
  • Re: LINGUAGGIO C: Triangolo rettangolo con asterischi

    void triangolo(int base, int altezza)
    {
    
       int i, j, r;
       double step  = (double)base / (double)altezza;
       double is = 0.0;
    
       for (i = 0; i < altezza ; i++)
       {
            is += step;
            r = (is < 1) ? 1 : (int)is;
            for (j = 0; j < r ; j++)
                printf("*");
            printf("\n");
       }
    }
    
    cosi è piu preciso, se invece si vuole una "grafica" migliore si potrebbe provare ad implementare l'algoritmo per il disegno delle linee.
Devi accedere o registrarti per scrivere nel forum
8 risposte