DOMANDA Tabulazione C

Matty Tuber

Nuovo Utente
66
1
Ho creato questo programma in C:
C:
#include <stdio.h>

int main()
{
    int i = 0;
    int n;
   
    printf("Inserire un numero: ");
    scanf("%d", &n);
   
    if (n<=79)
        while (i != n)
        {
               printf("\n * ");
               i++;
        }
   
    return 0;  
}

L'output di " * " è rischiesto in diagonale ma non ho idea di come si faccia...qualcuno saprebbe aiutarmi?

Questa è la consegna: Scrivere un programma che preso in input un numero stampi tanti *,
quanto il numero dato in input, in diagonale da sinistra a destra,
controllando che il numero inserito sia <= a 79.



Grazie mille : )
 
Ultima modifica da un moderatore:

rctimelines

Utente Èlite
5,144
2,023
CPU
Ryzen 7 2700X | i7-6700k@4.5 | i5-4460... altri
Dissipatore
wraith MAX | Scythe Katana2|Arctic Freezer 11LP
Scheda Madre
Asrock B450 Fatal1ty 4K | Asus Prime Z270P | Acer Veriton
HDD
Samsung 970evo m.2 | vari | Samsung 860 evo
RAM
16GB G.Skill TridentZ 3000 | 16GB CORSAIR 2133 | 8GB DDR3 1600
GPU
RadeonPro WX3100 4G | ZOTAC GTX 1070 8G | Quadro k620 2G
Monitor
DELL 2419P 2K + Benq 17" | LG Ultrawide 27''
Net
fibra 1000
OS
Windows10-pro64/OpenSUSE-QL15.1/Debian 10.3
Devi scrivere un * per riga spostato sempre di uno spazio.

Ci sono vari modi per farlo, per esempio con un ciclo annidato in cui quello più interno sposta orizzontalmente stampando spazi.

Ma su che libri studiate? Sembrano esercizi per lo zx81.. di quando la prima edizione.. 1980???

Inviato dal mio Nexus 5 utilizzando Tapatalk
 
  • Mi piace
Reazioni: BrutPitt

BrutPitt

Utente Attivo
1,166
1,262
Un suggerimento:
Due cicli for, annidati... quello esterno da con 'i' da 0 a 'n'... quello interno con 'j' da 0 a 'i'...
Nell'uno stampi spazi (lascio a te capire quale)... nell'altro stampi l'asterisco e l'andata a capo... ;-)
 
  • Mi piace
Reazioni: rctimelines

Matty Tuber

Nuovo Utente
66
1
Devi scrivere un * per riga spostato sempre di uno spazio.

Ci sono vari modi per farlo, per esempio con un ciclo annidato in cui quello più interno sposta orizzontalmente stampando spazi.

Ma su che libri studiate? Sembrano esercizi per lo zx81.. di quando la prima edizione.. 1980???

Inviato dal mio Nexus 5 utilizzando Tapatalk
È un esercizio che ho trovato in internet.
Comunque grazie mille per l'aiuto
Post unito automaticamente:

Un suggerimento:
Due cicli for, annidati... quello esterno da con 'i' da 0 a 'n'... quello interno con 'j' da 0 a 'i'...
Nell'uno stampi spazi (lascio a te capire quale)... nell'altro stampi l'asterisco e l'andata a capo... ;-)
Grazie mille
Un suggerimento:
Due cicli for, annidati... quello esterno da con 'i' da 0 a 'n'... quello interno con 'j' da 0 a 'i'...
Nell'uno stampi spazi (lascio a te capire quale)... nell'altro stampi l'asterisco e l'andata a capo... ;-)
Potresti farmi un esempio? Solo della parte dei cicli for...

Grazie mille
 
Ultima modifica:

rodhellas

Utente Èlite
1,522
427
CPU
Ryzen 5 3600
Dissipatore
GELID Phantom
Scheda Madre
MSI B450 Gaming Plus Max
HDD
500GB m.2 + 2TB HDD
RAM
16GB Corsair LPX 3000mhz
GPU
Gigabyte GTX 960 OC
Audio
Integrata
Monitor
SyncMaster 223BW
PSU
Antec HCG-520M
Case
Meshify C
Net
Gigabit Fastweb
OS
Windows 10 64bit

rctimelines

Utente Èlite
5,144
2,023
CPU
Ryzen 7 2700X | i7-6700k@4.5 | i5-4460... altri
Dissipatore
wraith MAX | Scythe Katana2|Arctic Freezer 11LP
Scheda Madre
Asrock B450 Fatal1ty 4K | Asus Prime Z270P | Acer Veriton
HDD
Samsung 970evo m.2 | vari | Samsung 860 evo
RAM
16GB G.Skill TridentZ 3000 | 16GB CORSAIR 2133 | 8GB DDR3 1600
GPU
RadeonPro WX3100 4G | ZOTAC GTX 1070 8G | Quadro k620 2G
Monitor
DELL 2419P 2K + Benq 17" | LG Ultrawide 27''
Net
fibra 1000
OS
Windows10-pro64/OpenSUSE-QL15.1/Debian 10.3
Scusate ma sono autodidatta...
Preferirei vedere un esempio per capire meglio se è possibile

Grazie
Mi pare una cosa scorretta, che tu sia autodidatta o meno!
Fai una cosa: scrivilo tu e vediamo dove sbagli.. almeno un po' di impegno!

Tra l'altro, ciò che @bruttpit ha lasciato a te scegliere, io ti avevo già detto quale ciclo mettere più interno! Ragiona almeno su questo, altrimenti non ha alcun senso cercare esercizi su internet e chiedere qui le soluzioni.. se uno ne ha voglia se li cerca da solo!

Inviato dal mio Nexus 5 utilizzando Tapatalk
 

Matty Tuber

Nuovo Utente
66
1
Mi pare una cosa scorretta, che tu sia autodidatta o meno!
Fai una cosa: scrivilo tu e vediamo dove sbagli.. almeno un po' di impegno!

Tra l'altro, ciò che @bruttpit ha lasciato a te scegliere, io ti avevo già detto quale ciclo mettere più interno! Ragiona almeno su questo, altrimenti non ha alcun senso cercare esercizi su internet e chiedere qui le soluzioni.. se uno ne ha voglia se li cerca da solo!

Inviato dal mio Nexus 5 utilizzando Tapatalk
Hai ragione, avevo già provato a farlo ma vedendo che non ottenevo nulla in output ho pensato di chiedere di nuovo senza pensare di mandare anche il codice. Lo mando nel messaggio seguente
Post unito automaticamente:

C:
#include <stdio.h>

int main()

{
    
    int i, j;
    
    int n;
    
    printf("Inserire un numero: ");
    scanf("%d", &n);
    
        
        for (i=0; i>n; i++)
        
        {
            
            for (j=0; i>0; j++)
            
            {
                
                printf("\t");
                
            }
            
            printf("\n * ");
            
        }
    
    return 0;   
    
}
 

Andretti60

Utente Èlite
6,440
5,091
No.
Ragiona un secondo.
Dei stampare n righe, per cui il primo ciclo e' corretto, da 0 a n-1
Per ogni riga, devi stampare un asterisco preceduto da tanti spazi (non tabelle) quanti sono i valori dell'indice corrente della linea. Per esempio, alla linea numero 10 devi stampare 10 spazi seguiti da un asterisco. Sbagli nel test della variabile j nel ciclo interno, j dovra' andare da 0 a ...
Ultimo errore, non stampare il newline PRIMA dell'asterisco. bensi...
 

rctimelines

Utente Èlite
5,144
2,023
CPU
Ryzen 7 2700X | i7-6700k@4.5 | i5-4460... altri
Dissipatore
wraith MAX | Scythe Katana2|Arctic Freezer 11LP
Scheda Madre
Asrock B450 Fatal1ty 4K | Asus Prime Z270P | Acer Veriton
HDD
Samsung 970evo m.2 | vari | Samsung 860 evo
RAM
16GB G.Skill TridentZ 3000 | 16GB CORSAIR 2133 | 8GB DDR3 1600
GPU
RadeonPro WX3100 4G | ZOTAC GTX 1070 8G | Quadro k620 2G
Monitor
DELL 2419P 2K + Benq 17" | LG Ultrawide 27''
Net
fibra 1000
OS
Windows10-pro64/OpenSUSE-QL15.1/Debian 10.3
Intanto il secondo ciclo ha la condizione sbagliata, ti era stato detto cosa doveva fare.. fai attenzione e non far perdere tempo!

Inviato dal mio Nexus 5 utilizzando Tapatalk
 

Matty Tuber

Nuovo Utente
66
1
Il concetto l'ho capito: ogni volta che i viene incrementato anche j deve essere incrementato in modo che incrementando j viene stampato lo spazio e incrementando i viene stampato *. Non riesco ad intuire la condizione del secondo ciclo penso che c'entri j e i ma non riesco a capire la condizione corretta.
Così è come ho fatto finora:
C:
#include <stdio.h>

int main()

{
    
    int i, j;
    
    int n;
    
    printf("Inserire un numero: ");
    scanf("%d", &n);
    
        
        for (i=0; i>n; i++)
        
        {
            
            for (j=0; j>i; j++)
            
            {
                
                printf(" ");
                
            }
            
            printf(" * \n");
            
        }
    
    return 0;   
    
}
 

Andretti60

Utente Èlite
6,440
5,091
Prendi carta e penna, e guarda come cambiano le variabili i e j all'interno di ogni ciclo. E' cosi' che si imparava una volta, quando non c'erano i debugger :)
Ci sei quasi, comunque.
 
  • Mi piace
Reazioni: Matty Tuber

rctimelines

Utente Èlite
5,144
2,023
CPU
Ryzen 7 2700X | i7-6700k@4.5 | i5-4460... altri
Dissipatore
wraith MAX | Scythe Katana2|Arctic Freezer 11LP
Scheda Madre
Asrock B450 Fatal1ty 4K | Asus Prime Z270P | Acer Veriton
HDD
Samsung 970evo m.2 | vari | Samsung 860 evo
RAM
16GB G.Skill TridentZ 3000 | 16GB CORSAIR 2133 | 8GB DDR3 1600
GPU
RadeonPro WX3100 4G | ZOTAC GTX 1070 8G | Quadro k620 2G
Monitor
DELL 2419P 2K + Benq 17" | LG Ultrawide 27''
Net
fibra 1000
OS
Windows10-pro64/OpenSUSE-QL15.1/Debian 10.3
Vabbeh autodidatta, ma forse di qualche altro argomento?

Inviato dal mio Nexus 5 utilizzando Tapatalk
 

Matty Tuber

Nuovo Utente
66
1
Vabbeh autodidatta, ma forse di qualche altro argomento?

Inviato dal mio Nexus 5 utilizzando Tapatalk
Chiedo scusa ma se non è disposto ad aiutarmi può anche evitare di scrivere nel topic offendendo anche le persone che provano ad impegnarsi in merito ad un determinato argomento
Post unito automaticamente:

Dopo averci ragionato per diverso tempo sono arrivato a questa soluzione...penso possa essere giusta

C:
#include <stdio.h>

int main()

{
    
    int i, j;
    
    int n;
    
    printf("Inserire un numero: ");
    scanf("%d", &n);
    
        
        for (i=0; i<n; i++)
        
        {
            
            for (j=0; j<i; j++)
            
            {
                
                printf(" ");
                
            }
            
            printf(" * \n");
            
        }
    
    return 0;   
    
}
 
Ultima modifica:

rctimelines

Utente Èlite
5,144
2,023
CPU
Ryzen 7 2700X | i7-6700k@4.5 | i5-4460... altri
Dissipatore
wraith MAX | Scythe Katana2|Arctic Freezer 11LP
Scheda Madre
Asrock B450 Fatal1ty 4K | Asus Prime Z270P | Acer Veriton
HDD
Samsung 970evo m.2 | vari | Samsung 860 evo
RAM
16GB G.Skill TridentZ 3000 | 16GB CORSAIR 2133 | 8GB DDR3 1600
GPU
RadeonPro WX3100 4G | ZOTAC GTX 1070 8G | Quadro k620 2G
Monitor
DELL 2419P 2K + Benq 17" | LG Ultrawide 27''
Net
fibra 1000
OS
Windows10-pro64/OpenSUSE-QL15.1/Debian 10.3
Bravo. Provala

Inviato dal mio Nexus 5 utilizzando Tapatalk
 

Ci sono discussioni simili a riguardo, dai un'occhiata!

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili