Forum Graph100

Forum Graph100

Vous n'êtes pas identifié.

Annonce

Bonjour et bienvenue sur le nouveau Forum Graph100 !
L'intégralité des données a été transférée sur un forum PunBB et tout les comptes sont fonctionnels avec le même nom d'utilisateur et mot de passe.
Un wiki est aussi disponible avec le même compte ! N'oubliez pas de remettre votre avatar, bon surf !
Pour plus d'informations, consultez ce post.

#76 21 Jun 2004 05:22:05

john_lenfr
Membre
Lieu: france
Date d'inscription: 14 Jan 2003
Messages: 56

Re: Projet toponoff

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).


john_lenfr

Hors ligne

 

#77 21 Jun 2004 05:33:52

dada66
Membre Communauté Graph100
Lieu: Perpignan
Date d'inscription: 09 Oct 2002
Messages: 1033

Re: Projet toponoff

pour le str2float regarde la fonction C atof() qui retourne un double en lui passant une chaine de caractère (#include <stdlib.h>)


Flash100, F100Console, GComm, ... : http://flash100.free.fr/xoops

Hors ligne

 

#78 21 Jun 2004 07:11:42

Julien
C++iste convaincu
Lieu: Waterloo (Be)
Date d'inscription: 29 May 2002
Messages: 1456
Site web

Re: Projet toponoff

Moi j'ai commencé tout au début avec les sources des jeux de duobab (comme tout le monde  lol ): 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 wink
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 smile , 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é  big_smile 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 wink


Pensez à surveiller mes releases wink

Hors ligne

 

#79 21 Jun 2004 07:36:48

john_lenfr
Membre
Lieu: france
Date d'inscription: 14 Jan 2003
Messages: 56

Re: Projet toponoff

Est ce que ça peu t'aider si je te donne le programme Basic?


john_lenfr

Hors ligne

 

#80 21 Jun 2004 07:58:52

Julien
C++iste convaincu
Lieu: Waterloo (Be)
Date d'inscription: 29 May 2002
Messages: 1456
Site web

Re: Projet toponoff

s'il fait 137 progs, non  8O


Pensez à surveiller mes releases wink

Hors ligne

 

#81 21 Jun 2004 08:18:30

apon
Membre
Lieu: Rouen
Date d'inscription: 29 Oct 2002
Messages: 29

Re: Projet toponoff

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

 

#82 21 Jun 2004 08:21:30

[neo]f4kill
Programmeur Graph100
Lieu: montauban
Date d'inscription: 05 Oct 2003
Messages: 678
Site web

Re: Projet toponoff

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 ..


=> Auteur de : Code, Hot-dog (v alpha), Aspirin v1.2, Memory v1.0, Slider v1.0 + 2 ou 3 progs à la noi wink


http://www.danasoft.com/sig-fre.jpg

Hors ligne

 

#83 21 Jun 2004 10:18:41

nykosledieu
Team G100
Lieu: Strasbourg
Date d'inscription: 29 Jan 2002
Messages: 3028
Site web

Re: Projet toponoff

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....)


Nykosledieu
nykosJEMMERDELESPAM@graph100.com - http://team.graph100.com
Venez sur le chat !!

Hors ligne

 

#84 21 Jun 2004 14:59:35

Julien
C++iste convaincu
Lieu: Waterloo (Be)
Date d'inscription: 29 May 2002
Messages: 1456
Site web

Re: Projet toponoff

Ca serait peut-etre mieux de faire ca en C++ avec new et delete qu'en C avec malloc et free a mon avis  :?


Pensez à surveiller mes releases wink

Hors ligne

 

#85 22 Jun 2004 05:07:54

john_lenfr
Membre
Lieu: france
Date d'inscription: 14 Jan 2003
Messages: 56

Re: Projet toponoff

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)


john_lenfr

Hors ligne

 

#86 22 Jun 2004 05:14:38

Bija
Membre Communauté Graph100
Lieu: Nord de la France
Date d'inscription: 20 Apr 2004
Messages: 240
Site web

Re: Projet toponoff

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


" Ignorer l'impossiblité de ce que l'on tente reste l'un des ingrédients essentiels de la réussite "

Hors ligne

 

#87 23 Jun 2004 05:34:56

Guest
Invité

Re: Projet toponoff

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:

Code:

#include <stdlib.h>
float atof(char *chaine)

'a to float' convertit la chaine en réel.

 

#88 23 Jun 2004 05:42:46

john_lenfr
Membre
Lieu: france
Date d'inscription: 14 Jan 2003
Messages: 56

Re: Projet toponoff

Code:

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?


john_lenfr

Hors ligne

 

#89 23 Jun 2004 06:03:18

john_lenfr
Membre
Lieu: france
Date d'inscription: 14 Jan 2003
Messages: 56

Re: Projet toponoff

Code:

/* 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'


john_lenfr

Hors ligne

 

#90 23 Jun 2004 06:42:03

Bija
Membre Communauté Graph100
Lieu: Nord de la France
Date d'inscription: 20 Apr 2004
Messages: 240
Site web

Re: Projet toponoff

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

Code:

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 :

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


" Ignorer l'impossiblité de ce que l'on tente reste l'un des ingrédients essentiels de la réussite "

Hors ligne

 

#91 23 Jun 2004 07:58:42

john_lenfr
Membre
Lieu: france
Date d'inscription: 14 Jan 2003
Messages: 56

Re: Projet toponoff

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)


john_lenfr

Hors ligne

 

#92 23 Jun 2004 07:59:24

Julien
C++iste convaincu
Lieu: Waterloo (Be)
Date d'inscription: 29 May 2002
Messages: 1456
Site web

Re: Projet toponoff

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 wink

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  lol
Et la longueur max effectivement je n'en avais pas tenu compte wink

NB: le tableau "lettres" ne doit pas forcément faire 100 ou 55 colonnes, on peut laisser char "lettres[3][] = {" wink


Pensez à surveiller mes releases wink

Hors ligne

 

#93 23 Jun 2004 08:24:02

Bija
Membre Communauté Graph100
Lieu: Nord de la France
Date d'inscription: 20 Apr 2004
Messages: 240
Site web

Re: Projet toponoff

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


" Ignorer l'impossiblité de ce que l'on tente reste l'un des ingrédients essentiels de la réussite "

Hors ligne

 

#94 23 Jun 2004 08:31:33

john_lenfr
Membre
Lieu: france
Date d'inscription: 14 Jan 2003
Messages: 56

Re: Projet toponoff

Code:

/* 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:

Code:

/* 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()


john_lenfr

Hors ligne

 

#95 23 Jun 2004 08:46:03

Julien
C++iste convaincu
Lieu: Waterloo (Be)
Date d'inscription: 29 May 2002
Messages: 1456
Site web

Re: Projet toponoff

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...  lol
Par contre j'avais oublié que le curseur devait effectivement etre effacé aussi wink

>> john
Au pire faut recréer la fonction atof()...


Pensez à surveiller mes releases wink

Hors ligne

 

#96 23 Jun 2004 14:52:56

john_lenfr
Membre
Lieu: france
Date d'inscription: 14 Jan 2003
Messages: 56

Re: Projet toponoff


>> 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é...


john_lenfr

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr