Atof.forum

sarah -  
mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   -
bonjour g un bleme g ecris ce programme pour convertir une chaine de caracteres en tableau d'entiers il se compile correctement mais il ne s'execute pas est ce que vous pouvais m'aider merci a tous voici mon prog
#include<stdio.h>
#include<string.h>
#include<conio.h>
#include<stdlib.h>
float verif(char*ch)
{int i,r,;float w;char rh[10];
r=0;
for(i=r;ch[i]!='\0';i++)
while((ch[i]!='<')&&(ch[i]!='>')&&(ch[i]!='!')&&(ch[i]!='=')&&(ch[i]!='&')&&(ch[i]!='|'))
{
strcpy(rh,ch);
w=atof(rh);
scanf("%f",&w)
return(w);
r=i+1;
}

main()
{ int i,r;
char ch[100];float t[30];
puts("donnez votre expression logique");
gets(ch);
for(i=0;ch[i]!='\0';i++)
t[i]=verif(ch);
for(i=0;i<30;i++)
printf("la valeur est","%f",t[i]);
scanf("%f",&t[i]);
}

3 réponses

  1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     
    Voici les corrections a apporter pour que ca compile
    #include <string.h>
    #include <stdlib.h>
    #include <stdio.h>
    
    float verif(char*ch)
    {
        //  int i,r,;
        int i,r;
        float w;
        char rh[10];
        r=0;
        for(i=r;ch[i]!='\0';i++){
            while((ch[i]!='<')
            &&    (ch[i]!='>')
            &&    (ch[i]!='!')
            &&    (ch[i]!='=')
            &&    (ch[i]!='&')
            &&    (ch[i]!='|'))
            {
                strcpy(rh,ch);
                w=atof(rh);
    //          scanf("%f",&w)
    //              return(w);
    // ton programme s'arretera a la premiere iteration ! c'est plutot :
                if (scanf("%f",&w)==1) return(w);
                r=i+1;
            }
        }
        //il manque un return ici !
        return 0;
    }// } manquante
    
    //  main() //pas de type de retour pour la fonction main ! 
    // il faut au moins mettre void main(), et int main() pour être standard
    int main(){
    //  int i,r; //r pas utilisé
        int i;
        char ch[100];float t[30];
        puts("donnez votre expression logique");
        gets(ch);
        for(i=0;ch[i]!='\0';i++)
            t[i]=verif(ch);
        for(i=0;i<30;i++){
            //printf("la valeur est","%f",t[i]);
            printf("la valeur est %f",t[i]);
        }
        scanf("%f",&t[i]);
        return 0;//pour etre standard !
    }
    

    Mais en lisant ton code à mon avis ça ne fera pas ce que tu veux, car à mon avis le code actuel n'a pas de sens. Qu'est sensé faire la fonction verif ? Que veux-tu que le programme fasse ?

    Bonne chance
    0
  2. sarah
     
    tout d'abord merci de m'avoir repondue le but du programme c de covertir une chaine de caractere en un tableau d'entier ex 12<5&&3<2
    et de retourner le resultas de la fonction logique pour cet ex je doi retourner 0 mais avant ça je doit sanvgarder le 12 et le 5 et le 3 et le 2 dans un tableau d'entier et pr cela je dois d'abord les convertir en entier g essayer comme ça pr convertir mais ça n'as rien donne
    merci de m'aider
    #include<stdio.h>
    #include<string.h>
    #include<conio.h>
    #include<stdlib.h>
    float verif(char*ch)
    {int i,r,;float w;char rh[10];
    r=0;
    for(i=r;ch[i]!='\0';i++)
    while((ch[i]!='<')&&(ch[i]!='>')&&(ch[i]!='!')&&(ch[i]!='=')&&(ch[i]!='&')&&(ch[i]!='|'))
    {
    strcpy(rh,ch);
    w=atof(rh);
    scanf("%f",&w);
    return(w);
    r=i+1;
    }}

    int main(int argc, char * argv[])

    { int n,i,r;float t[30];
    char ch[100];
    puts("donnez votre expression logique");
    gets(ch);

    for(i=0;ch[i]!='\0';i++)
    {t[r]=verif(ch);
    printf("la valeur est : %f",t[r]);
    scanf("%f",&t[r]);
    getch();}
    return 0 ;

    }
    nvertir mais ça n'as rien donne
    0