Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
cristian_c
Accecante Asceta
Messaggi: 23422 Iscrizione: lunedì 29 ottobre 2007, 11:31
Messaggio
da cristian_c » domenica 28 dicembre 2008, 20:03
Ciao, ho risolto l'ultimo problema:
Codice: Seleziona tutto
#include <stdio.h>
#include <stdlib.h>
#include <linux/termios.h>
int colonne()
{
int fd = fileno(stdin);
struct winsize s;
if (!isatty(fd)) {
fprintf(stderr, "Not a terminal\n");
exit(1);
}
ioctl(fd, TIOCGWINSZ, &s);
return s.ws_col;
}
main()
{
int t1,t2;
char c;
int col,rig;
int i,j,iold,jold,q,cont;
printf("\n *** PROGRAMMA PER LA RAPPRESENTAZIONE DELLE TESSERE DEL DOMINO ***\n\n");
printf("\nPremere:\n1- Per visualizzare una tessera in particolare\n2- Per visualizzare l'intero set di tessere\n\n");
printf("\t\t\t\t\t\t\tScelta:");
scanf("%c",&c);
if (c == '1') {
printf("\n// l'utente dovrà inserire una coppia di cifre che rappresentano i numeri\n// presenti sulla superficie della tessera che si vuole visualizzare\n\n");
printf("prima cifra(da 0 a 6): ");
scanf("%d",&t1);
printf("seconda cifra(da 0 a 6): ");
scanf("%d",&t2);
if ((t1>=0 && t1<=6) && (t2>=0 && t2<=6)) {
printf("\n");
if (t1==0 || t1==1) printf(" ");
if (t1==2 || t1==3) printf("* ");
if (t1==4 || t1==5 || t1==6) printf("* *");
printf(" | ");
if (t2==0 || t2==1) printf(" ");
if (t2==2 || t2==3) printf("* ");
if (t2==4 || t2==5 || t2==6) printf("* *");
printf("\n");
if (t1==1 || t1==3 || t1==5) printf(" * ");
if (t1==0 || t1==2 || t1==4) printf(" ");
if (t1==6) printf("* *");
printf(" | ");
if (t2==1 || t2==3 || t2==5) printf(" * ");
if (t2==0 || t2==2 || t2==4) printf(" ");
if (t2==6) printf("* *");
printf("\n");
if (t1==0 || t1==1) printf(" ");
if (t1==2 || t1==3) printf(" *");
if (t1==4 || t1==5 || t1==6) printf("* *");
printf(" | ");
if (t2==0 || t2==1) printf(" ");
if (t2==2 || t2==3) printf(" *");
if (t2==4 || t2==5 || t2==6) printf("* *");
printf("\n\n");
}
}
if (c == '2') {
printf("Visualizzazione delle 28 tessere in corso.Premere un tasto per continuare...");
getchar(); getchar();
col=colonne();
q=col/9;
if (q*9+q-1>col) q=q-1;
cont=1;
rig=0;
iold=0;
jold=0;
j=0;
while (j<7) {
i=j;
while(i<7) {
if (cont%q==1 && cont!=1) printf("\n");
if (rig==0) {
if (i==0 || i==1) printf(" ");
if (i==2 || i==3) printf("* ");
if (i==4 || i==5 || i==6) printf("* *");
printf(" | ");
if (j==0 || j==1) printf(" ");
if (j==2 || j==3) printf("* ");
if (j==4 || j==5 || j==6) printf("* *");
}
if (rig==1) {
if (i==1 || i==3 || i==5) printf(" * ");
if (i==0 || i==2 || i==4) printf(" ");
if (i==6) printf("* *");
printf(" | ");
if (j==1 || j==3 || j==5) printf(" * ");
if (j==0 || j==2 || j==4) printf(" ");
if (j==6) printf("* *");
}
if (rig==2) {
if (i==0 || i==1) printf(" ");
if (i==2 || i==3) printf(" *");
if (i==4 || i==5 || i==6) printf("* *");
printf(" | ");
if (j==0 || j==1) printf(" ");
if (j==2 || j==3) printf(" *");
if (j==4 || j==5 || j==6) printf("* *");
}
if (cont%q==0) {
if (rig==2) {
iold=i; jold=j;
rig=-1;
}
i=iold; j=jold;
rig++;
}
if (cont%q!=0) printf(" ");
i++;
cont++;
}
j++;
}
printf("\n\n");
}
}
ma non ci siamo comunque
:
Codice: Seleziona tutto
cristiancozzolino@cristiancozzolino-laptop:~/programmazione$ ./domino
*** PROGRAMMA PER LA RAPPRESENTAZIONE DELLE TESSERE DEL DOMINO ***
Premere:
1- Per visualizzare una tessera in particolare
2- Per visualizzare l'intero set di tessere
Scelta:2
Visualizzazione delle 28 tessere in corso.Premere un tasto per continuare...
| | * | * | * * | * * | * * | |
* | | * | | * | * * | * | * | *
| * | * | * * | * * | * * | | * |
* | * * | * * | * * | * | * * | * * * | * * * | *
* | * | * * | * * * | * | * | | * |
* | * * | * * | * * | * | * * | * * * | * * * | *
* * | * * | * * * | * * * | * * * | * * * | * * * * | * * * * | * *
* * | * | * | * * | * * * | * | * | * * |
* * | * * | * * * | * * * | * * * | * * * | * * * * | * * * * | * *
* * | * * * * | * * * * | * *
cristiancozzolino@cristiancozzolino-laptop:~/programmazione$
sembra cose tutto fosse sparato a caso.... avete qualche idea per venirne a capo? ::)
cristian_c
Accecante Asceta
Messaggi: 23422 Iscrizione: lunedì 29 ottobre 2007, 11:31
Messaggio
da cristian_c » domenica 28 dicembre 2008, 21:22
Ho provato con gdb, ma anche esso ha uno strano comportamento ??? ::) :-\ :
Codice: Seleziona tutto
(gdb) next
82 if (j==0 || j==1) printf(" ");
8: i = 5
7: j = 0
6: jold = 0
5: iold = 0
4: rig = 0
3: cont = 6
2: q = 8
1: col = 80
(gdb) next
83 if (j==2 || j==3) printf("* ");
8: i = 5
7: j = 0
6: jold = 0
5: iold = 0
4: rig = 0
3: cont = 6
2: q = 8
1: col = 80
(gdb) next
84 if (j==4 || j==5 || j==6) printf("* *");
8: i = 5
7: j = 0
6: jold = 0
5: iold = 0
4: rig = 0
3: cont = 6
2: q = 8
1: col = 80
(gdb) next
86 if (rig==1) {
8: i = 5
7: j = 0
6: jold = 0
5: iold = 0
4: rig = 0
3: cont = 6
2: q = 8
1: col = 80
(gdb) next
95 if (rig==2) {
8: i = 5
7: j = 0
6: jold = 0
5: iold = 0
4: rig = 0
3: cont = 6
2: q = 8
1: col = 80
(gdb) next
104 if (cont%q==0) {
8: i = 5
7: j = 0
6: jold = 0
5: iold = 0
4: rig = 0
3: cont = 6
2: q = 8
1: col = 80
(gdb) next
112 if (cont%q!=0) printf(" ");
8: i = 5
7: j = 0
6: jold = 0
5: iold = 0
4: rig = 0
3: cont = 6
2: q = 8
1: col = 80
(gdb) next
113 i++;
8: i = 5
7: j = 0
6: jold = 0
5: iold = 0
4: rig = 0
3: cont = 6
2: q = 8
1: col = 80
(gdb) next
114 cont++;
8: i = 6
7: j = 0
6: jold = 0
5: iold = 0
4: rig = 0
3: cont = 6
2: q = 8
1: col = 80
(gdb) next
75 while(i<7) {
8: i = 6
7: j = 0
6: jold = 0
5: iold = 0
4: rig = 0
3: cont = 7
2: q = 8
1: col = 80
(gdb) next
76 if (cont%q==1 && cont!=1) printf("\n");
8: i = 6
7: j = 0
6: jold = 0
5: iold = 0
4: rig = 0
3: cont = 7
2: q = 8
1: col = 80
(gdb) next
77 if (rig==0) {
8: i = 6
7: j = 0
6: jold = 0
5: iold = 0
4: rig = 0
3: cont = 7
2: q = 8
1: col = 80
(gdb) next
78 if (i==0 || i==1) printf(" ");
8: i = 6
7: j = 0
6: jold = 0
5: iold = 0
4: rig = 0
3: cont = 7
2: q = 8
1: col = 80
(gdb) next
79 if (i==2 || i==3) printf("* ");
8: i = 6
7: j = 0
6: jold = 0
5: iold = 0
4: rig = 0
3: cont = 7
2: q = 8
1: col = 80
(gdb) next
80 if (i==4 || i==5 || i==6) printf("* *");
8: i = 6
7: j = 0
6: jold = 0
5: iold = 0
4: rig = 0
3: cont = 7
2: q = 8
1: col = 80
(gdb) next
81 printf(" | ");
8: i = 6
7: j = 0
6: jold = 0
5: iold = 0
4: rig = 0
3: cont = 7
2: q = 8
1: col = 80
(gdb) next
82 if (j==0 || j==1) printf(" ");
8: i = 6
7: j = 0
6: jold = 0
5: iold = 0
4: rig = 0
3: cont = 7
2: q = 8
1: col = 80
(gdb) next
83 if (j==2 || j==3) printf("* ");
8: i = 6
7: j = 0
6: jold = 0
5: iold = 0
4: rig = 0
3: cont = 7
2: q = 8
1: col = 80
(gdb) next
84 if (j==4 || j==5 || j==6) printf("* *");
8: i = 6
7: j = 0
6: jold = 0
5: iold = 0
4: rig = 0
3: cont = 7
2: q = 8
1: col = 80
(gdb) next
86 if (rig==1) {
8: i = 6
7: j = 0
6: jold = 0
5: iold = 0
4: rig = 0
3: cont = 7
2: q = 8
1: col = 80
(gdb) next
95 if (rig==2) {
8: i = 6
7: j = 0
6: jold = 0
5: iold = 0
4: rig = 0
3: cont = 7
2: q = 8
1: col = 80
(gdb) next
104 if (cont%q==0) {
8: i = 6
7: j = 0
6: jold = 0
5: iold = 0
4: rig = 0
3: cont = 7
2: q = 8
1: col = 80
(gdb) next
112 if (cont%q!=0) printf(" ");
8: i = 6
7: j = 0
6: jold = 0
5: iold = 0
4: rig = 0
3: cont = 7
2: q = 8
1: col = 80
(gdb) next
113 i++;
8: i = 6
7: j = 0
6: jold = 0
5: iold = 0
4: rig = 0
3: cont = 7
2: q = 8
1: col = 80
(gdb) next
114 cont++;
8: i = 7
7: j = 0
6: jold = 0
5: iold = 0
4: rig = 0
3: cont = 7
2: q = 8
1: col = 80
(gdb) next
75 while(i<7) {
8: i = 7
7: j = 0
6: jold = 0
5: iold = 0
4: rig = 0
3: cont = 8
2: q = 8
1: col = 80
(gdb) next
116 j++;
8: i = 7
7: j = 0
6: jold = 0
5: iold = 0
4: rig = 0
3: cont = 8
2: q = 8
1: col = 80
(gdb) next
73 while (j<7) {
8: i = 7
7: j = 1
6: jold = 0
5: iold = 0
4: rig = 0
3: cont = 8
2: q = 8
1: col = 80
(gdb) next
74 i=j;
8: i = 7
7: j = 1
6: jold = 0
5: iold = 0
4: rig = 0
3: cont = 8
2: q = 8
1: col = 80
(gdb) next
75 while(i<7) {
8: i = 1
7: j = 1
6: jold = 0
5: iold = 0
4: rig = 0
3: cont = 8
2: q = 8
1: col = 80
(gdb) next
76 if (cont%q==1 && cont!=1) printf("\n");
8: i = 1
7: j = 1
6: jold = 0
5: iold = 0
4: rig = 0
3: cont = 8
2: q = 8
1: col = 80
(gdb) next
77 if (rig==0) {
8: i = 1
7: j = 1
6: jold = 0
5: iold = 0
4: rig = 0
3: cont = 8
2: q = 8
1: col = 80
(gdb) next
78 if (i==0 || i==1) printf(" ");
8: i = 1
7: j = 1
6: jold = 0
5: iold = 0
4: rig = 0
3: cont = 8
2: q = 8
1: col = 80
(gdb) next
79 if (i==2 || i==3) printf("* ");
8: i = 1
7: j = 1
6: jold = 0
5: iold = 0
4: rig = 0
3: cont = 8
2: q = 8
1: col = 80
(gdb) next
80 if (i==4 || i==5 || i==6) printf("* *");
8: i = 1
7: j = 1
6: jold = 0
5: iold = 0
4: rig = 0
3: cont = 8
2: q = 8
1: col = 80
(gdb) next
81 printf(" | ");
8: i = 1
7: j = 1
6: jold = 0
5: iold = 0
4: rig = 0
3: cont = 8
2: q = 8
1: col = 80
(gdb) next
82 if (j==0 || j==1) printf(" ");
8: i = 1
7: j = 1
6: jold = 0
5: iold = 0
4: rig = 0
3: cont = 8
2: q = 8
1: col = 80
(gdb) next
83 if (j==2 || j==3) printf("* ");
8: i = 1
7: j = 1
6: jold = 0
5: iold = 0
4: rig = 0
3: cont = 8
2: q = 8
1: col = 80
(gdb) next
84 if (j==4 || j==5 || j==6) printf("* *");
8: i = 1
7: j = 1
6: jold = 0
5: iold = 0
4: rig = 0
3: cont = 8
2: q = 8
1: col = 80
(gdb) next
86 if (rig==1) {
8: i = 1
7: j = 1
6: jold = 0
5: iold = 0
4: rig = 0
3: cont = 8
2: q = 8
1: col = 80
(gdb) next
95 if (rig==2) {
8: i = 1
7: j = 1
6: jold = 0
5: iold = 0
4: rig = 0
3: cont = 8
2: q = 8
1: col = 80
(gdb) next
104 if (cont%q==0) {
8: i = 1
7: j = 1
6: jold = 0
5: iold = 0
4: rig = 0
3: cont = 8
2: q = 8
1: col = 80
(gdb) next
105 if (rig==2) {
8: i = 1
7: j = 1
6: jold = 0
5: iold = 0
4: rig = 0
3: cont = 8
2: q = 8
1: col = 80
(gdb) next
109 i=iold; j=jold;
8: i = 1
7: j = 1
6: jold = 0
5: iold = 0
4: rig = 0
3: cont = 8
2: q = 8
1: col = 80
(gdb) next
110 rig++;
8: i = 0
7: j = 0
6: jold = 0
5: iold = 0
4: rig = 0
3: cont = 8
2: q = 8
1: col = 80
(gdb) next
112 if (cont%q!=0) printf(" ");
8: i = 0
7: j = 0
6: jold = 0
5: iold = 0
4: rig = 1
3: cont = 8
2: q = 8
1: col = 80
(gdb) next
113 i++;
8: i = 0
7: j = 0
6: jold = 0
5: iold = 0
4: rig = 1
3: cont = 8
2: q = 8
1: col = 80
(gdb) next
114 cont++;
8: i = 1
7: j = 0
6: jold = 0
5: iold = 0
4: rig = 1
3: cont = 8
2: q = 8
1: col = 80
(gdb) next
75 while(i<7) {
8: i = 1
7: j = 0
6: jold = 0
5: iold = 0
4: rig = 1
3: cont = 9
2: q = 8
1: col = 80
(gdb) next
76 if (cont%q==1 && cont!=1) printf("\n");
8: i = 1
7: j = 0
6: jold = 0
5: iold = 0
4: rig = 1
3: cont = 9
2: q = 8
1: col = 80
(gdb) next
| | * | * | * * | * * | * * | |
77 if (rig==0) {
8: i = 1
7: j = 0
6: jold = 0
5: iold = 0
4: rig = 1
3: cont = 9
2: q = 8
1: col = 80
(gdb)
cristian_c
Accecante Asceta
Messaggi: 23422 Iscrizione: lunedì 29 ottobre 2007, 11:31
Messaggio
da cristian_c » lunedì 29 dicembre 2008, 15:52
Ho risolto numerosi bug
:
Codice: Seleziona tutto
#include <stdio.h>
#include <stdlib.h>
#include <linux/termios.h>
int colonne()
{
int fd = fileno(stdin);
struct winsize s;
if (!isatty(fd)) {
fprintf(stderr, "Not a terminal\n");
exit(1);
}
ioctl(fd, TIOCGWINSZ, &s);
return s.ws_col;
}
main()
{
int t1,t2;
char c;
int col,rig;
int i,j,iold,jold,q,cont;
printf("\n *** PROGRAMMA PER LA RAPPRESENTAZIONE DELLE TESSERE DEL DOMINO ***\n\n");
printf("\nPremere:\n1- Per visualizzare una tessera in particolare\n2- Per visualizzare l'intero set di tessere\n\n");
printf("\t\t\t\t\t\t\tScelta:");
scanf("%c",&c);
if (c == '1') {
printf("\n// l'utente dovrà inserire una coppia di cifre che rappresentano i numeri\n// presenti sulla superficie della tessera che si vuole visualizzare\n\n");
printf("prima cifra(da 0 a 6): ");
scanf("%d",&t1);
printf("seconda cifra(da 0 a 6): ");
scanf("%d",&t2);
if ((t1>=0 && t1<=6) && (t2>=0 && t2<=6)) {
printf("\n");
if (t1==0 || t1==1) printf(" ");
if (t1==2 || t1==3) printf("* ");
if (t1==4 || t1==5 || t1==6) printf("* *");
printf(" | ");
if (t2==0 || t2==1) printf(" ");
if (t2==2 || t2==3) printf("* ");
if (t2==4 || t2==5 || t2==6) printf("* *");
printf("\n");
if (t1==1 || t1==3 || t1==5) printf(" * ");
if (t1==0 || t1==2 || t1==4) printf(" ");
if (t1==6) printf("* *");
printf(" | ");
if (t2==1 || t2==3 || t2==5) printf(" * ");
if (t2==0 || t2==2 || t2==4) printf(" ");
if (t2==6) printf("* *");
printf("\n");
if (t1==0 || t1==1) printf(" ");
if (t1==2 || t1==3) printf(" *");
if (t1==4 || t1==5 || t1==6) printf("* *");
printf(" | ");
if (t2==0 || t2==1) printf(" ");
if (t2==2 || t2==3) printf(" *");
if (t2==4 || t2==5 || t2==6) printf("* *");
printf("\n\n");
}
}
if (c == '2') {
printf("Visualizzazione delle 28 tessere in corso.Premere un tasto per continuare...");
getchar(); getchar();
col=colonne();
q=col/9;
if (q*9+q-1>col) q=q-1;
cont=1;
rig=0;
iold=-1;
jold=0;
j=0;
while (j<7) {
i=j;
while(i<7) {
if (cont%q==1 && cont!=1) printf("\n");
if (rig==0) {
if (i==0 || i==1) printf(" ");
if (i==2 || i==3) printf("* ");
if (i==4 || i==5 || i==6) printf("* *");
printf(" | ");
if (j==0 || j==1) printf(" ");
if (j==2 || j==3) printf("* ");
if (j==4 || j==5 || j==6) printf("* *");
}
if (rig==1) {
if (i==1 || i==3 || i==5) printf(" * ");
if (i==0 || i==2 || i==4) printf(" ");
if (i==6) printf("* *");
printf(" | ");
if (j==1 || j==3 || j==5) printf(" * ");
if (j==0 || j==2 || j==4) printf(" ");
if (j==6) printf("* *");
}
if (rig==2) {
if (i==0 || i==1) printf(" ");
if (i==2 || i==3) printf(" *");
if (i==4 || i==5 || i==6) printf("* *");
printf(" | ");
if (j==0 || j==1) printf(" ");
if (j==2 || j==3) printf(" *");
if (j==4 || j==5 || j==6) printf("* *");
}
if (cont%q==0 || i==6 && j==6) {
if (rig==2) {
iold=i; jold=j;
rig=-1;
}
else if (cont%q!=0) printf("\n");
i=iold; j=jold;
rig++;
}
if (cont%q!=0) printf(" ");
i++;
cont++;
}
j++;
}
printf("\n\n");
}
}
I tasselli stanno andando tutti al loro posto.
Ora resta solo un piccolo problema di natura sconosciuta nella penultima riga come potete vedere dall'output:
Codice: Seleziona tutto
cristiancozzolino@cristiancozzolino-laptop:~/programmazione$ ./domino
*** PROGRAMMA PER LA RAPPRESENTAZIONE DELLE TESSERE DEL DOMINO ***
Premere:
1- Per visualizzare una tessera in particolare
2- Per visualizzare l'intero set di tessere
Scelta:2
Visualizzazione delle 28 tessere in corso.Premere un tasto per continuare...
| | * | * | * * | * * | * * | |
| * | | * | | * | * * | * | *
| | * | * | * * | * * | * * | |
* | * | * * | * * | * * | * | * * | * * * | *
| * * | * | * * | * * * | * | * | |
* | * | * * | * * | * * | * | * * | * * * | *
* * | * * * | * * | * * * | * * * | * * * | * * * | * * * * | * *
* | * * | * | * | * * | * * * | * | * |
* * | * * * | * * | * * * | * * * | * * * | * * * | * * * * | * *
* * | * * * * | * * * * | * * * * | * *
* * | * | * * * | * * * | * *
* * | * * * * | * * * * | * * * * | * *
cristiancozzolino@cristiancozzolino-laptop:~/programmazione$
secondo voi perchè la penultima riga viene spostata a destra di un carattere, e come si puo' risolvere? ???
crap0101
Rampante Reduce
Messaggi: 8242 Iscrizione: martedì 30 ottobre 2007, 6:33
Desktop: LXDE
Distribuzione: Ubuntu 18.04.1 LTS
Sesso: Maschile
Località: TO
Contatti:
Messaggio
da crap0101 » martedì 30 dicembre 2008, 17:19
ho notato che se alla riga 103
metti
printf("")
senza lo spazio la penultimariga va a posto
Codice: Seleziona tutto
Premere:
1- Per visualizzare una tessera in particolare
2- Per visualizzare l'intero set di tessere
Scelta:2
Visualizzazione delle 28 tessere in corso.Premere un tasto per continuare...
| | * | * | * * | * * | * * | |
| * | | * | | * | * * | * | *
| | * | * | * * | * * | * * | |
* | * | * * | * * | * * | * | * * | * * * | *
| * * | * | * * | * * * | * | * | |
* | * | * * | * * | * * | * | * * | ** * | *
* * | * * * | * * | * * * | * * * | * * * | * * * | * ** * | * *
* | * * | * | * | * * | * * * | * | * |
* * | ** * | * * | ** * | ** * | ** * | ** * | * ** * | * *
* * | * ** * | * ** * | * ** * | * *
* * | * | * * * | * * * | * *
* * | * ** * | * ** * | * ** * | * *
Visualizzano questa sezione: 0 utenti iscritti e 4 ospiti