Flux rss
Rechercher : dans
Par :

Mini probleme(programmation en C)

Selia, le mercredi 29 mars 2006 à 14:38:06 
 Signaler ce message aux modérateurs

Salut a tous?
j'ai dis un mini probleme , j'espere qu'il est mini mini tout rikiki, et maintenant a vous de voir:
en fait j'aimerais savoir comment faire pour transformer (convertir) une chaine de caractere en un tableau sachant que j'ai pas exemple des opperateurs (ou des caracteres non transformable)dans la chaine,
exemple:6*3e2+5
(bien sur je dois mettre des vides a la place des opperateurs ) mais comment faire ?!
je sais que je peux le faire avec la fonction atof , mais comment?!!!j'ai essaillé plein de trucs mais ça na marche pas! (je me suis surement tromper quelque part)

alors je vous dis merci d'avance, un grand MERCI a tous ceux qui pourront me repondre positivement,
@+

1

mamiemando, le mercredi 29 mars 2006 à 16:19:32

En t'inspirant de :
http://www.cppfrance.com/code.aspx?ID=10851
et en prenant pour délimiteur "*-+/eE", tu pourras extraire chaque nombre dans une chaine, que tu pourras ensuite mettre dans un tabealu à l'aide du fameux atof. Mais pour que atof marche il ne faut que la chaîne ne contienne qu'un nombre et rien d'autre !

Bonne chance

Répondre à mamiemando

2

Selia, le mercredi 29 mars 2006 à 18:11:20

Bein honnetement je n'ai pas vraiment saisis votre truc:
comment prendre "/*-+" comme delimiteurs?!!!!!!!!!
et puis je ne vois pas vraiment le rapport entre le site : http://www.cppfrance.com/code.aspx?ID=10851
et mon probleme, car je dois demander (dans mon programme) a ce qu'on donne une expression (à calculer)à chaque fois ;
donc je n'ai pas qu'un seul cas à traiter mais plusieurs(j'ai besion d'un cas general),

j'espere que vous pourrrais m'aider,

HELP
please, i need your help;
i hope you'll give me a solution to this probleme.

Selia.

Répondre à Selia

3

mamiemando, le jeudi 30 mars 2006 à 09:53:00

#include <stdlib.h>
#include <stdio.h>
#include <string.h>

int main(){
    char *pointeur;
    char *separateur = { "*-+/eE" }; // Le séparateur
    char *buffer;
    char *Chaine_Entrante="2.56e-8*3.14";
    int nb_mot=1;

    buffer = strdup ( Chaine_Entrante );

    // premier appel,
    pointeur = strtok( buffer, separateur );
    printf ("Mot de la phrase numero : %d %s\n",nb_mot, pointeur);

    while( pointeur != NULL )
    {
        // Cherche les autres separateur
        pointeur = strtok( NULL, separateur );
        if ( pointeur != NULL )
        {
            nb_mot++; // increment du nombre de mot
            printf ("Mot de la phrase numero : %d %s\n",nb_mot, pointeur);
            //faire le atof ici
        }
    }

    getchar (); // pause en mode console

    return 0 ;
}

Répondre à mamiemando

4

Selia, le jeudi 30 mars 2006 à 12:50:27

Mille merci :-)

j'ai pas pu faire se que je voulais faire(mettre les valaurs dans un tableau) ,mais bon,
en tout cas grace a vous j'ai appris quelque chose;

merci;
Selia.

Répondre à Selia

5

mamiemando, le jeudi 30 mars 2006 à 13:47:09

Ben il suffit juste de faire :

    double tab[255];
    ...
    while( pointeur != NULL )
    {
        // Cherche les autres separateur
        pointeur = strtok( NULL, separateur );
        if ( pointeur != NULL )
        {
            tab[nb_mot]=aotf(pointeur);
            nb_mot++; // increment du nombre de mot
        }
    }
    ...

Non ?

Bonne chance

Répondre à mamiemando

6

Selia, le vendredi 7 avril 2006 à 14:43:35

Bjr merci de m'aider mais j'aimerai juste savoir pourquoi, le tableau affiche la premiere valeur selement (2.56)
merci,
le programme:

#include <stdlib.h>
#include <stdio.h>
#include <string.h>

int main(){
double tab[255];
char *pointeur;
char *separateur = { "*-+/eE" }; // Le séparateur
char *buffer;
char *Chaine_Entrante="2.56e-8*3.14";
int nb_mot=1;

buffer = strdup ( Chaine_Entrante );

// premier appel,
pointeur = strtok( buffer, separateur );
printf ("Mot de la phrase numero : %d %s\n",nb_mot, pointeur);

while( pointeur != NULL )
{
// Cherche les autres separateur
pointeur = strtok( NULL, separateur );
if ( pointeur != NULL )
{
tab[nb_mot]=atof(pointeur);
nb_mot++; // increment du nombre de mot
}
getchar (); // pause en mode console

return 0 ;
} }

Répondre à Selia

7

mamiemando, le vendredi 7 avril 2006 à 16:58:06

Ton return 0 n'était pas dans le bon bloc. Après correction ça donne :

#include <stdio.h>
#include <string.h>

int main(){
    double tab[255];
    char *pointeur;
    char *separateur = { "*-+/eE" }; // Le séparateur
    char *buffer;
    char *Chaine_Entrante="2.56e-8*3.14";
    int nb_mot=0;

    buffer = strdup ( Chaine_Entrante );

    // premier appel,
    pointeur = buffer;

    pointeur = strtok(buffer,separateur);
    if ( pointeur != NULL )
    {
        tab[nb_mot]=atof(pointeur);
        ++nb_mot; // increment du nombre de mot
        printf ("Mot de la phrase numero : %d %s\n",nb_mot, pointeur);
    }

    while( pointeur != NULL )
    {
        // Cherche les autres separateur
        pointeur = strtok( NULL, separateur );
        if ( pointeur != NULL )
        {
            tab[nb_mot]=atof(pointeur);
            ++nb_mot; // increment du nombre de mot
            printf ("Mot de la phrase numero : %d %s\n",nb_mot, pointeur);
        }
    }
    return 0 ;
}

Le 1er élément est stocké dans la case 0, le second dans la case 1 etc...

Pour bien faire tu peux mettre le bloc if(pointeur!=NULL){ ... } dans une fonction corrigeant nbmot et tab... Cf cours sur les pointeurs.

@+

Répondre à mamiemando

8

Selia, le vendredi 7 avril 2006 à 17:32:24

Le programme se compile mais il ne s'execute pas ;
alors ?
c'est quoi le proleme?
merci

Répondre à Selia

9

 mamiemando, le samedi 8 avril 2006 à 00:36:21
Répondre à mamiemando
Prog c++ sous linux et windows salut a tous voila j'aimerais faire un prog c++ qui tourne sous plusiseurs plateformes... en gros linux et windaube. Ma question est : est ce possible? Je pense qu'il est possible de faire une seule source compilable sous linux et sous windows(avec... www.commentcamarche.net/forum/affich-865690-prog-c-sous-linux-et-windows
Mini compilateur C Bonjour, j'ai comme un mini projet un mini compilateur C. exactement la partie analyseur lexicale. je ne sais pas par quoi commencer merci d'avance pour ceux qui veulent m'éclaircir un peu. www.commentcamarche.net/forum/affich-4562525-mini-compilateur-c
[Langage C] C/C++ Erreur de segmentationQu'est ce qu'une erreur de segmentation Vous êtes en train de développer une application sous Linux en C/C++. Tout va bien, ça compile, les oiseaux chantent. Donc vous lancez votre application pour la tester. Et vous obtenez l'un de ces deux... www.commentcamarche.net/faq/sujet-4791-langage-c-c-c-erreur-de-segmentation
Compiler du C sous Linux/UNIXSous Linux, le compilateur de C est gcc. Il est installé de base sur plusieurs distributions, mais sur Debian (et celles qui en découlent) il faudra l'installer (aptitude install gcc). gcc Syntaxe de GCC gcc Tout d'abord, il faut savoir... www.commentcamarche.net/faq/sujet-203-compiler-du-c-sous-linux-unix
Interfacer du code assembleur et du CInterfacer du code assembleur et du C Introduction Appeler du code assembleur écrit dans un fichier source externe Avec Nasm (x86 uniquement) Compilation/Execution sous Linux Avec Gcc (multiplateforme) Introduction Si, à tout hasard,... www.commentcamarche.net/faq/sujet-8257-interfacer-du-code-assembleur-et-du-c
Comment executer un programme C sous windows (Résolu)Bonjour, Voici mon problème, j'ai un programme en C programmé sous linux et je voudrais executer ce programme sous windows XP. Pour faire simple, j'ai le programme suivant dans le fichier que j'ai appelé Simulation (c'est déjà un fichier executable et... www.commentcamarche.net/forum/affich-7953176-comment-executer-un-programme-c-sous-windows
[programme c] comment exécuter un programme cbonjour je suis un débutant sur linux et j aimerais savoir comment on peut exécuter un programme c après l avoir taper et compiler? Merci d avance à tous ceux ki m aideront dans mon apprentissage www.commentcamarche.net/forum/affich-2091609-programme-c-comment-executer-un-programme-c
C# Lancer programme avec argumentBonjour, Je souhaite lancer un programme (exe) avec arguments à partir de mon programme C#. J'y suis arrivé, voici mon code private void LaunchVLC(string arg) { ProcessStartInfo processInfo = new ProcessStartInfo(@"C:\Program... www.commentcamarche.net/forum/affich-11781878-c-lancer-programme-avec-argument
Télécharger Micro Edi C#Micro-EDI C# est un logiciel pédagogique qui vous permet d’apprendre à programmer sous Net 2.0. Vous aurez la possibilité de compiler et d’exécuter des programmes C#. L’interface vous propose des fiches avec lesquelles vous pourrez... www.commentcamarche.net/telecharger/telecharger-34058335-micro-edi-c
Télécharger Dev-C++Dev-C++ est un environnement de développement intégré (IDE) en C/C++. Son compilateur est basé sur Mingw de GCC, mais il peut également être utilisé avec CygWin. www.commentcamarche.net/telecharger/telecharger-59-dev-c
Introduction au langage CPetite histoire du C Le langage C a été mis au point par D.Ritchie et B.W.Kernighan au début des années 70. Leur but était de permettre de développer un langage qui permettrait d'obtenir un système d'exploitation de type UNIX portable. D.Ritchie... www.commentcamarche.net/contents/c/cintro.php3
Les pointeurs en langage CDéfinition d'un pointeur Un pointeur est une variable contenant l'adresse d'une autre variable d'un type donné. La notion de pointeur fait souvent peur car il s'agit d'une technique de programmation très puissante, permettant de définir des... www.commentcamarche.net/contents/c/cpoint.php3
Les structures en langage C++Différence entre une structure et un tableau Un tableau permet de regrouper des éléments de même type, c'est-à-dire codés sur le même nombre de bits et de la même façon. Toutefois, il est généralement utile de pouvoir rassembler des éléments de... www.commentcamarche.net/contents/cpp/cppstruct.php3