Atof.forum

sarah -  
mamiemando Messages postés 34243 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

mamiemando Messages postés 34243 Date d'inscription   Statut Modérateur Dernière intervention   7 898
 
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
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
mamiemando Messages postés 34243 Date d'inscription   Statut Modérateur Dernière intervention   7 898
 
Ok dans ce cas c'est presque que la même chose qu'ici :
https://forums.commentcamarche.net/forum/affich-2168877-mini-probleme-programmation-en-c

Il faut juste changer les séparateurs.

Bonne chance
0