Mini probleme(programmation en C)
Résolu/Fermé
Selia
Messages postés
15
Date d'inscription
mercredi 29 mars 2006
Statut
Membre
Dernière intervention
12 avril 2006
-
29 mars 2006 à 14:38
mamiemando Messages postés 33635 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 16 avril 2025 - 8 avril 2006 à 00:36
mamiemando Messages postés 33635 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 16 avril 2025 - 8 avril 2006 à 00:36
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,
@+
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,
@+
A voir également:
- Mini probleme(programmation en C)
- Opera mini pc - Télécharger - Navigateurs
- Meilleur mini pc - Accueil - Guide ordinateurs
- Application de programmation - Guide
- Geekom mini it11 - Accueil - Guide ordinateurs
- Rohos mini drive - Télécharger - Chiffrement
6 réponses
mamiemando
Messages postés
33635
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
16 avril 2025
7 842
29 mars 2006 à 16:19
29 mars 2006 à 16:19
En t'inspirant de :
https://codes-sources.commentcamarche.net/
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
https://codes-sources.commentcamarche.net/
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
mamiemando
Messages postés
33635
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
16 avril 2025
7 842
30 mars 2006 à 09:53
30 mars 2006 à 09:53
#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 ; }
Selia
Messages postés
15
Date d'inscription
mercredi 29 mars 2006
Statut
Membre
Dernière intervention
12 avril 2006
30 mars 2006 à 12:50
30 mars 2006 à 12:50
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.
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.
mamiemando
Messages postés
33635
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
16 avril 2025
7 842
30 mars 2006 à 13:47
30 mars 2006 à 13:47
Ben il suffit juste de faire :
Non ?
Bonne chance
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
Selia
Messages postés
15
Date d'inscription
mercredi 29 mars 2006
Statut
Membre
Dernière intervention
12 avril 2006
7 avril 2006 à 14:43
7 avril 2006 à 14:43
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 ;
} }
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 ;
} }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
mamiemando
Messages postés
33635
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
16 avril 2025
7 842
7 avril 2006 à 16:58
7 avril 2006 à 16:58
Ton return 0 n'était pas dans le bon bloc. Après correction ça donne :
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.
@+
#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.
@+
Selia
Messages postés
15
Date d'inscription
mercredi 29 mars 2006
Statut
Membre
Dernière intervention
12 avril 2006
7 avril 2006 à 17:32
7 avril 2006 à 17:32
le programme se compile mais il ne s'execute pas ;
alors ?
c'est quoi le proleme?
merci
alors ?
c'est quoi le proleme?
merci
mamiemando
Messages postés
33635
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
16 avril 2025
7 842
8 avril 2006 à 00:36
8 avril 2006 à 00:36
29 mars 2006 à 18:11
comment prendre "/*-+" comme delimiteurs?!!!!!!!!!
et puis je ne vois pas vraiment le rapport entre le site : https://codes-sources.commentcamarche.net/
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.