Vous n'êtes pas identifié.
Ba en fait plus vite jarrive à faire le programme, mieu c'est. Pour l'instan le prog en Basic tourne donc celui ci viendrai en remplacement.
Pour ce qui est de la réalisation, comment toi tu as fait pour atteindre le niveau que tu as? Bouquins?, exemples?, pratique?,....
Moi j'ai très envi de réaliser ce programme mai j'ai besoin d'explications.
Personnellement moi je créerais direct une classe ou une structure pour définir ce qu'est un "Point" (ici une chaine de char + 3 float), et j'utiliserais des listes chainées pour pouvoir facilement récupérer des points dans l'ensemble, les changer de place etc...
Tu as une idée où je peu trouver un tuto la dessu? Et toi? Tu as des exemples commentés de ça?
Ou alors il faudrait que quelqu'un te crée tous les objets utiles pour ton prog (un "point", un "ensemble de points", ...) en leur donnant toutes les fonctionnalités que tu souhaites (un point peut faire en sorte d'etre saisi au clavier, un ensemble de points peut s'enregistrer en memzone etc), et par la suite tu pourras utiliser ces objets meme sans trop savoir comment ils fonctionnent, il suffit juste de savoir ce qu'ils "savent faire"... (c'est le principe d'encapsulation du c++)
Quelqu'un peu faire ça sur le forum?
En attendant j'ai essayé le code que tu ma donné mais comment je crée la fonction "str2float()" ? Parce que TC3 me met une erreur (forcément, je pense que c'est parcequ'il ne trouve rien la dessu).
Hors ligne
pour le str2float regarde la fonction C atof() qui retourne un double en lui passant une chaine de caractère (#include <stdlib.h>)
Hors ligne
Moi j'ai commencé tout au début avec les sources des jeux de duobab (comme tout le monde ): scorch, pacman etc... Ca c'était surtout pour m'habituer au C, mais j'avais déja 2 ans et demi de basic derrière moi
Et puis j'ai lu un bouquin sur l'assembleur: "l'assembleur facile", me souviens plus de la collection mais c'est pas tout neuf, par contre il y a eu des éditions plus récentes;
Et pour le cpp j'ai potassé tout ce cours-là: http://www.up.univ-mrs.fr/wcpp/V1/lecons.htm , que je recommande à tous ceux qui veulent commencer le cpp d'ailleurs , et enfin mes cours d'unif m'ont servi à tout consolider et à découvrir d'autres approches et d'autres techniques...
Finalement ca va bientôt faire 2 ans que j'ai laissé le basic de côté en sachant que je passe la (grosse) majorité de mon temps libre à programmer... :oops: mais que j'en ai pas tellement à disposition, vu qu'accessoirement je termine 2 ans de prépa :mrgreen:
Je pense que ca ne devrait pas etre tres difficile de concevoir les objets qu'il te faut, mais il faut que tu donnes une liste précise de leurs fonctionnalités... A mon avis il vaut mieux que tu te familiarises d'abord avec le concept d'"objet", ca te permettra d'avoir une idée plus précise de ce dont tu as besoin et de ce que chaque objet devra pouvoir faire... Mais bon, faut prendre le temps de lire qq notions de cpp à mon avis, ca sera pas clair en 3 jours
Hors ligne
Est ce que ça peu t'aider si je te donne le programme Basic?
Hors ligne
Hors ligne
salut,
Je vait pas te faire avancer en disant ca mais moi aussi j ai fait un bts geometre topographe l année derniere et j utilisait aussi ce prog vraiment lourd mais qui fait gagner des heures de calculs. Bon courage pour le prog en C.
Hors ligne
lol
il a raison ..
a mon avis tu devrait d'abbord te familiariser avec le C/C++, faire 2 ou 3 petits programmes, et ensuite t'attaquer à celui-la .. mais pas avant ..
Hors ligne
comme l'a dit julien, utilises les listes chainées avec une attribution de la mémoire dynamique ( google : liste chainée et l'aide de TC : malloc, free, realloc....)
Hors ligne
Ca serait peut-etre mieux de faire ca en C++ avec new et delete qu'en C avec malloc et free a mon avis :?
Hors ligne
Je vais potasser tout ça pour essayer de comprendre vos conseils.
Merci Julien pour le lien.
S'il y en a d'autres n'hésiter pas à les mettre, j'irai lire les tutos!
ps: ou est-ce que l'on peu trouver le tuto de Whyp? (j'ai essayer sur son site mais ça marche pas)
Hors ligne
pour le tuto de whyp tu peux essayer
http://perso.wanadoo.fr/casioworld/zip/graph100_2nd.zip
(lien de casioworld)
mais un conseil ne le lis pas tout de suite
les explications sont tres complexee et la plupart des instructions sont en assembleur
par contre moi j'ai commencé le C sur http://opecheux.free.fr/abcp
Hors ligne
pour le str2float regarde la fonction C atof() qui retourne un double en lui passant une chaine de caractère (#include <stdlib.h>)
Merci pour l'info:
#include <stdlib.h> float atof(char *chaine)
'a to float' convertit la chaine en réel.
void bscan (char *nom, int longueur) { int i,x,y,test; int mode=2; int a=0; char c; char lettres[3][100] = { "**1234567890****************************************.", "**uvwpqrmnoz******e*ty*i******asdfghjkl******xc*b*** ", "**UVWPQRMNOZ******E*TY*I******ASDFGHJKL******XC*B*** " }; x=1; y=2; gotoxy(1,8); printf("Mode :"); do { gotoxy(x,y);printf("_"); test=0; i=getkb(); if(i>52) { if(i==56) // chang de mode { wait(50); mode = (mode+1)%3; gotoxy(8,8); printf("%c", (mode==0? '0' : lettres[mode][30]) ); } else if(i==83 || i==75) // retour arriere { if(x || y) { wait(50); x--; a--; if(x<0) { x=20; y--; } } } c='*'; } else c=lettres[mode][i]; if(c != '*') // lettre valide { wait(50); nom[a++]=c; gotoxy(x++,y); printf("%c",&c); if(x==21) { y++; x=0; } } } while(i!=28); nom[a] = ' '; }
@ Julien: Voila ce que ça donne une fois terminé. Le seul problème c'est que lors de la saisie ce n'est pas le caractère qui s'affiche mais son code hexa (des 'FFF'). C'est plutot gênant pour savoir ce que l'on tape. Par contre, dans l'affichage final récapitulatif, c'est bien la lettre ou le chiffre qui s'affiche.
Est-ce qu'il n'y a pas un problème de déclarations sur l'affichage (un '%c' à la place d'un '%s' ou un truc comme ça).
Tu as trouvé toi Bija?
Hors ligne
/* Librairies */ #include <stdlib.h> #include <stdio.h> #include <math.h> #include <casio3.h> #include <saisie.h> void main() { /* declarations */ char chaine[25]; float tablo[200][4]; // tes valeurs sont des floats int i, j, nbrePts = 100; // valeur a ajuster selon les besoins char* demandes[] = { "matricule?", "X=?", "Y=?", "Z=?" }; for(i=0; i<nbrePts; i++) // pour chaque point { for(j=0; j<4; j++) // pour chacune des 4 valeurs caracterisant le point { clrscr(); gotoxy(1,1); printf("%s", demandes[j]); //"matricule?" ou "X=?" ou "Y=?" ou "Z=?" bscan (chaine,15); // saisie de la valeur tablo[i][j] = atof(chaine); // enregistre la valeur saisie, apres "traduction" wait(50); } /* affichage du resultat */ clrscr(); printf ("matricule: %fn", tablo[i][0]); printf (" X= %fn", tablo[i][1]); printf (" Y= %fn", tablo[i][2]); printf (" Z= %fn", tablo[i][3]); printf (" fin nn"); /* attente pour visualisation */ while(getkb()!=28); } // passe au point suivant /* retour menu */ }
J'ai fini par faire ça mais TC3 me rapporte l'erreur:
Linker error: Undefined symbol _atof in module .... exemplemon_nom_de_fichier
Ca veu dire koi?,kes ki se passe? Parce que la fonction atof() est bien déclarée dans la lib 'stdlib.h'
Hors ligne
pour l'amélioration de bscan j'ai remarqué qqs bugs dc je vé regarder ca aujourd'hui
apparemment la fonction atof n'est pas définie et je ne la conné pas dc je peux pas trop t'aider
EDIT : alors voila je crois que maintenant la fonction ne présente plus de pb
void bscan (char* nom, int longueur) { int i,x,y; int mode=2; int a=0; char c; char lettres[3][55] = { "**1234567890****************************************.", "**uvwpqrmnoz******e*ty*i******asdfghjkl******xc*b*** ", "**UVWPQRMNOZ******E*TY*I******ASDFGHJKL******XC*B*** " }; x=1; y=2; gotoxy(1,8); printf("MODE : A"); do { gotoxy(x,y); printf("_"); i=getkb(); if(i>52) { if(i==56) // chang de mode { mode = (mode+1)%3; gotoxy(8,8); printf("%c", (mode==0? '0' : lettres[mode][30]) ); } else if(i==83 || i==75) // retour arriere { if(x || y) { gotoxy(x,y); printf(" "); x--; a--; if(x<0) { x=20; y--; } } } c='*'; } else c=lettres[mode][i]; if(c != '*' && a!=longueur) // lettre valide { nom[a++]=c; gotoxy(x++,y); printf("%c",c); if(x==21) { y++; x=0; } } if (i) while (getkb()) {} } while(i!=28); nom[a] = ' '; }
la principale modification concerne le remplavement de :
printf("%c",&c);
par
printf("%c",c);
sinon il y avé aussi qq petits trucs à corriger (vérifier la longueur max, effacer le carctére apres le retour arriere)
enfin c'est du bon travail merci julien
Hors ligne
la principale modification concerne le remplavement de :
Code:
printf("%c",&c);par
Code:
printf("%c",c);sinon il y avé aussi qq petits trucs à corriger (vérifier la longueur max, effacer le carctére apres le retour arriere)
enfin c'est du bon travail merci julien
Merci Bija et Julien, ça marche super!!
Pourkoi ne pas intégrer cette fonction dans la lib casio2.h?
Quelqu'un sait pour atof() ? (cf->précédents topics)
Hors ligne
la principale modification concerne le remplavement de :
Code:
printf("%c",&c);par
Code:
printf("%c",c);
Oui effectivement ca a l'air mieux... Comme je n'utilise jamais ces fonctions j'ai parfois du mal à me rappeler s'il faut une adresse ou une valeur
sinon il y avé aussi qq petits trucs à corriger (vérifier la longueur max, effacer le carctére apres le retour arriere)
Pour le retour arrière je ne l'ai pas mis car il me semblait que le curseur '_' l'effacerait de toute facon... J'ai pas regardé en détail
Et la longueur max effectivement je n'en avais pas tenu compte
NB: le tableau "lettres" ne doit pas forcément faire 100 ou 55 colonnes, on peut laisser char "lettres[3][] = {"
Hors ligne
j'avais laissé lettres[3][]={ .. mais ca marché pas
TC dit "size of the type is unknown or zero.."
donc j'ai surdimensionné légérement le tableau
en effet le curseur efface le caractere précédent mais l'ancien curseur n'était pas effacé
quant à intégrer cette fonction dans casio2.h ... j'en serais ravi
Hors ligne
/* Librairies */ #include <stdlib.h> #include <stdio.h> #include <math.h> #include <casio3.h> #include <bscan.h> void main() { /* declarations */ char chaine[25]; // vaut mieux la faire trop grande que trop petite int tablo[200][4]; // tes valeurs sont des floats int i=0, j=0, nbrePts=3; // valeur a ajuster selon les besoins char* demandes[] = {"matricule?", "X=?", "Y=?", "Z=?"}; for(i=0; i<nbrePts;i++) // pour chaque point { for(j=0; j<4; j++) // pour chacune des 4 valeurs caracterisant le point { clrscr(); gotoxy(1,1); printf("%s", demandes[j]); //"matricule?" ou "X=?" ou "Y=?" ou "Z=?" bscan (chaine,25); // saisie de la valeur tablo[i][j]=atoi(chaine); // enregistre la valeur saisie, apres "traduction" wait(50); } /* affichage du resultat */ clrscr(); printf ("matricule: %dn", tablo[i][0]); printf (" X= %dn", tablo[i][1]); printf (" Y= %dn", tablo[i][2]); printf (" Z= %dn", tablo[i][3]); printf (" fin nn"); /* attente pour visualisation */ wait(50); while (getkb()!=28); wait(50); } // passe au point suivant /* retour menu */ getch(); emptybuf(); return; }
ce code marche parfaitement. Le seul 'problème' c'est que c'est pour des nombres entiers. Comment le transformer sachant que ça ça marche pas:
/* Librairies */ #include <stdlib.h> #include <stdio.h> #include <math.h> #include <casio3.h> #include <bscan.h> void main() { /* declarations */ char chaine[25]; // vaut mieux la faire trop grande que trop petite float tablo[200][4]; // tes valeurs sont des floats int i=0, j=0, nbrePts=3; // valeur a ajuster selon les besoins char* demandes[] = {"matricule?", "X=?", "Y=?", "Z=?"}; for(i=0; i<nbrePts;i++) // pour chaque point { for(j=0; j<4; j++) // pour chacune des 4 valeurs caracterisant le point { clrscr(); gotoxy(1,1); printf("%s", demandes[j]); //"matricule?" ou "X=?" ou "Y=?" ou "Z=?" bscan (chaine,25); // saisie de la valeur tablo[i][j]=atof(chaine); // enregistre la valeur saisie, apres "traduction" wait(50); } /* affichage du resultat */ clrscr(); printf ("matricule: %dn", tablo[i][0]); printf (" X= %fn", tablo[i][1]); printf (" Y= %fn", tablo[i][2]); printf (" Z= %fn", tablo[i][3]); printf (" fin nn"); /* attente pour visualisation */ wait(50); while (getkb()!=28); wait(50); } // passe au point suivant /* retour menu */ getch(); emptybuf(); return; }
Voir topic plus haut pour l'erreur sur atof()
Hors ligne
j'avais laissé lettres[3][]={ .. mais ca marché pas
TC dit "size of the type is unknown or zero.."
donc j'ai surdimensionné légérement le tableau
en effet le curseur efface le caractere précédent mais l'ancien curseur n'était pas effacé
Tiens pour le tableau c'est sans doute le C qui me joue encore des tours...
Par contre j'avais oublié que le curseur devait effectivement etre effacé aussi
>> john
Au pire faut recréer la fonction atof()...
Hors ligne
>> john
Au pire faut recréer la fonction atof()...
Oui mais c'est ça le problème, je sais pas la remplacer, sinon j'taurai pa dérangé...
Hors ligne