Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Questo semplice programmino in C si può sintetizzare?

Linguaggi e sistemi

Moderatori: Foto UtentePaolino, Foto Utentefairyvilje

0
voti

[1] Questo semplice programmino in C si può sintetizzare?

Messaggioda Foto UtenteLuigi97 » 27 giu 2017, 12:31

Chiedo scusa se nel giro di poche ore posto un'altra domanda (prometto che mi do una calmata :D )
Vorrei sapere... questo programma qui:
Codice: Seleziona tutto
#include <stdio.h>
#include <stdlib.h>

/* Permettere all'utente di scegliersi le misure di un rettangolo o un quadrato con una parte interna
   e di farlo visualizzare per il numero di volte desiderato */

int main(void) {
   int x;   /* Variaible delle colonne, della parte interna e dell'ultima riga */
   int y;   /* Variaible colonna sinistra e colonna destra */
   int z;   /* Vaviabile per un altro rettangolo o quadrato */
   int a;
   int b; 
   int c;
   int d;
   
   printf("Inserisci il numero di colonne: ");
   scanf("%d", &x);
   printf("Inserisci il numero di righe: ");
   scanf("%d", &y);
   printf("Inserisci il numero di volte che vuoi visualizzare il rettanolgo o il quadrato: ");
   scanf("%d", &z);
   
for(a=x; a>0; a--){    /* Viene stampata la prima riga orizzontale (sarebbe il numero di colonne) */
   printf("+");
}
    printf("\n");
for(a=y; a>0; a--){    /* Stampa il lato sinistro */
   printf("+");
for(b=x-2; b>0; b--)   /* Stampaa la parte interna */
    printf("Q");
for(c=1; c>0; c--)     /* Stampa il lato destro */
    printf("+\n");         
}   
for(a=x; a>0; a--){   /* Stampa la prarte bassa del rettangolo (l'ultima riga) */
   printf("+");
}   
    printf("\n\n");
   
for(d=z-1; d>0; d--){  /* Ricomincia tutto da capo per il numero di votle scelto dall'utente */
if(d>0){
for(a=x; a>0; a--){
   printf("+");
}
    printf("\n");
for(a=y; a>0; a--){
   printf("+");
for(b=x-2; b>0; b--)
    printf("Q");
for(c=1; c>0; c--)
    printf("+\n");         
}   
for(a=x; a>0; a--){
   printf("+");
}
    printf("\n\n");
}
}
   
   
   return 0;
}

è scritto bene, oppure si potrebbe semplificare/sintetizzare?
Ultima modifica di Foto UtenteLuigi97 il 27 giu 2017, 13:15, modificato 1 volta in totale.
Avatar utente
Foto UtenteLuigi97
40 4
 
Messaggi: 49
Iscritto il: 17 giu 2017, 16:35

0
voti

[2] Re: Questo semplice programmino si può sintetizzare?

Messaggioda Foto UtenteAjeieBrazov » 27 giu 2017, 12:41

A prima vista ti dico che si potrebbe, innanzi tutto, scrivere meglio rispettando le indentazioni e le corrette tabulazioni.
Il resto viene dopo.
Avatar utente
Foto UtenteAjeieBrazov
1.460 4 10
---
 
Messaggi: 586
Iscritto il: 23 mag 2017, 21:53

0
voti

[3] Re: Questo semplice programmino si può sintetizzare?

Messaggioda Foto Utentexyz » 27 giu 2017, 12:43

Di solito il termine «sintetizzare» si usa in altri linguaggi come VHDL e Verilog, per un programma in C per un computer no.

Il programma è molto semplice e si vede che è scritto da un principiante.

P.S. Contiene anche una incongruenza, non si capisce se si devono includere i caratteri del bordo oppure no:

Codice: Seleziona tutto
Inserisci il numero di colonne: 5
Inserisci il numero di righe: 6
Inserisci il numero di volte che vuoi visualizzare il rettanolgo o il quadrato: 1
+++++
+QQQ+
+QQQ+
+QQQ+
+QQQ+
+QQQ+
+QQQ+
+++++


genera un rettangolo di 5 per 8 caratteri.
Avatar utente
Foto Utentexyz
6.864 2 4 6
G.Master EY
G.Master EY
 
Messaggi: 1778
Iscritto il: 5 dic 2009, 18:37
Località: Italy Turin

0
voti

[4] Re: Questo semplice programmino si può sintetizzare?

Messaggioda Foto UtenteLuigi97 » 27 giu 2017, 12:58

Grazie per i consigli!
Comunque i "+" formerebbero la cornice... mi scuso per l'incongruenza.

-----------
Cerco un attimo di aggiustarlo.
Avatar utente
Foto UtenteLuigi97
40 4
 
Messaggi: 49
Iscritto il: 17 giu 2017, 16:35

0
voti

[5] Re: Questo semplice programmino in C si può sintetizzare?

Messaggioda Foto UtenteLuigi97 » 27 giu 2017, 13:18

Adesso dovrebbe andare un pochino meglio
Codice: Seleziona tutto
#include <stdio.h>
#include <stdlib.h>

/* Permettere all'utente di scegliersi le misure di un rettangolo o un quadrato con una parte interna
   e di farlo visualizzare per il numero di volte desiderato */

int main(void) {
   int x;   /* Variaible delle colonne, della parte interna e dell'ultima riga */
   int y;   /* Variaible colonna sinistra e colonna destra */
   int z;   /* Vaviabile per la ripetizione del rettangolo o del quadrato */
   int a;
   int b; 
   int c;
   int d;
   
   printf("Inserisci il numero di colonne: ");
   scanf("%d", &x);
   printf("Inserisci il numero di righe: ");
   scanf("%d", &y);
   printf("Inserisci il numero di volte che vuoi visualizzare il rettanolgo o il quadrato: ");
   scanf("%d", &z);
   
for(a=x+2; a>0; a--){  /* Viene stampata la prima riga orizzontale (sarebbe il numero di colonne) */
   printf("+");
}
    printf("\n");
for(a=y; a>0; a--){    /* Stampa il lato sinistro */
   printf("+");
for(b=x; b>0; b--)     /* Stampaa la parte interna */
    printf("Q");
for(c=1; c>0; c--)     /* Stampa il lato destro */
    printf("+\n");         
}   
for(a=x+2; a>0; a--){   /* Stampa la prarte bassa del rettangolo (l'ultima riga) */
   printf("+");
}   
    printf("\n\n");
   
for(d=z-1; d>0; d--){   /* Ricomincia tutto da capo per il numero di votle scelto dall'utente */
if(d>0){
for(a=x+2; a>0; a--){
   printf("+");
}
    printf("\n");
for(a=y; a>0; a--){
   printf("+");
for(b=x; b>0; b--)
    printf("Q");
for(c=1; c>0; c--)
    printf("+\n");         
}   
for(a=x+2; a>0; a--){
   printf("+");
}
    printf("\n\n");
}
}
   
   
   return 0;
}
Avatar utente
Foto UtenteLuigi97
40 4
 
Messaggi: 49
Iscritto il: 17 giu 2017, 16:35

0
voti

[6] Re: Questo semplice programmino in C si può sintetizzare?

Messaggioda Foto UtenteIlGuru » 27 giu 2017, 13:59

Si potrebbe usare un solo ciclo for ed inserire gli acapi testando la variabile del ciclo con l'operatore modulo, una cosa tipo:
Codice: Seleziona tutto
if ( x % ( numcolonne+2 ) == 0 ) printf("\n");


Inoltre visto che non si possono stampare migliaia di righe e colonne invece che il tipo int si potrebbe usare unsigned char, un microcontrollore lo apprezzerebbe
\Gamma\nu\tilde{\omega}\theta\i\ \sigma\epsilon\alpha\upsilon\tau\acute{o}\nu
Avatar utente
Foto UtenteIlGuru
5.482 2 10 13
G.Master EY
G.Master EY
 
Messaggi: 1924
Iscritto il: 31 lug 2015, 23:32

1
voti

[7] Re: Questo semplice programmino in C si può sintetizzare?

Messaggioda Foto Utenteboiler » 27 giu 2017, 14:08

IlGuru ha scritto:Inoltre visto che non si possono stampare migliaia di righe e colonne invece che il tipo int si potrebbe usare unsigned char, un microcontrollore lo apprezzerebbe


Se proprio vogliamo andare in questa direzione, a partire da C99 ci sono gli exact-width datatypes che hanno solo vantaggi. In questo caso sarebbe un uint8_t

char ha un nome fuorviante, dipende dall'implementazione... insomma, non facciamoci del male :mrgreen:

Boiler
Avatar utente
Foto Utenteboiler
26,4k 5 9 13
G.Master EY
G.Master EY
 
Messaggi: 5600
Iscritto il: 9 nov 2011, 12:27


Torna a PC e informatica

Chi c’è in linea

Visitano il forum: Nessuno e 43 ospiti