Problème avec un programme C
Résolu/Fermé
yadhus
Messages postés
33
Date d'inscription
dimanche 17 février 2008
Statut
Membre
Dernière intervention
16 mars 2009
-
17 févr. 2008 à 11:34
yadhus Messages postés 33 Date d'inscription dimanche 17 février 2008 Statut Membre Dernière intervention 16 mars 2009 - 17 févr. 2008 à 17:50
yadhus Messages postés 33 Date d'inscription dimanche 17 février 2008 Statut Membre Dernière intervention 16 mars 2009 - 17 févr. 2008 à 17:50
A voir également:
- Problème avec un programme C
- Programme demarrage windows 10 - Guide
- Mettre en veille un programme - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
- Forcer la fermeture d'un programme - Guide
- Desinstaller un programme - Guide
4 réponses
Mahmah
Messages postés
496
Date d'inscription
lundi 17 septembre 2007
Statut
Membre
Dernière intervention
22 juin 2010
125
17 févr. 2008 à 11:58
17 févr. 2008 à 11:58
Bonjour,
Je vois deux points par lesquels commencer:
1) gets ne répond pas exactement à l'énoncé (enfin moi je ne l'interpréterais pas comme ça) car gets lit la ligne puis tu transformes. Je ferais un getc pour lire caractère par caractère. Ainsi tu peux vérifier en live si tu as des doubles espaces et ne pas les insérer dans une chaîne que tu construit petit à petit.
2) if ( (ch[i]=' ' ) && ( ch[i+1]=' ' ) )
si ch "Bonjour", après cette ligne ch vaudra " njour"
Le test d'égalité en C/C++/Java est ==, un simple = est une affectation.
M.
EDIT.
Je n'ai pas vérifié ce point car il m'a apparu possible dans ton algo. Un tableau de 7 caractères va bien de l'indice 0 à 6.
Je vois deux points par lesquels commencer:
1) gets ne répond pas exactement à l'énoncé (enfin moi je ne l'interpréterais pas comme ça) car gets lit la ligne puis tu transformes. Je ferais un getc pour lire caractère par caractère. Ainsi tu peux vérifier en live si tu as des doubles espaces et ne pas les insérer dans une chaîne que tu construit petit à petit.
2) if ( (ch[i]=' ' ) && ( ch[i+1]=' ' ) )
si ch "Bonjour", après cette ligne ch vaudra " njour"
Le test d'égalité en C/C++/Java est ==, un simple = est une affectation.
M.
EDIT.
Je n'ai pas vérifié ce point car il m'a apparu possible dans ton algo. Un tableau de 7 caractères va bien de l'indice 0 à 6.
yadhus
Messages postés
33
Date d'inscription
dimanche 17 février 2008
Statut
Membre
Dernière intervention
16 mars 2009
3
17 févr. 2008 à 12:27
17 févr. 2008 à 12:27
Merci beaucoup pour ton aide. J'ai enfin résolu cet exercice, bon si jamais ça t'intéresses voici le code source
#include <stdio.h>
#include <string.h>
int main ()
{
char ch[255];
int i,j,A,e;
printf ("Donner votre chaîne de caractère\n");
gets (ch);
A=strlen(ch);
for (i=0;i<A;i++)
{
if (e!=0) i--;
e=0;
if (ch[i]=='\t')
{
/*for (j=i;j<A;j++)
{
ch[j]=ch[j+1];
e++;
A--;
}*/
ch[i]=' ';
}
}
e=0;
for (i=0;i<A;i++)
{
if (e!=0) i--;
e=0;
if ((ch[i]==' ') && (ch[i+1]==' '))
{
for (j=i+1;j<A;j++) ch[j]=ch[j+1];
e++;
A--;
}
}
puts (ch);
return 0;
}
#include <stdio.h>
#include <string.h>
int main ()
{
char ch[255];
int i,j,A,e;
printf ("Donner votre chaîne de caractère\n");
gets (ch);
A=strlen(ch);
for (i=0;i<A;i++)
{
if (e!=0) i--;
e=0;
if (ch[i]=='\t')
{
/*for (j=i;j<A;j++)
{
ch[j]=ch[j+1];
e++;
A--;
}*/
ch[i]=' ';
}
}
e=0;
for (i=0;i<A;i++)
{
if (e!=0) i--;
e=0;
if ((ch[i]==' ') && (ch[i+1]==' '))
{
for (j=i+1;j<A;j++) ch[j]=ch[j+1];
e++;
A--;
}
}
puts (ch);
return 0;
}
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
17 févr. 2008 à 13:24
17 févr. 2008 à 13:24
encore une possibilité
#include<stdio.h> int lire(char *ch,int longueur); int main () { char ch[255]; while(lire(ch,255)>0){ printf("%s\n",ch); } return 0; } int lire(char *ch,int longueur){ int i,c; char d = 'a'; for(i=0;i<longueur-1 && (c=getchar()) != EOF && c != '\n';){ if(c == '\t') c = ' '; if(d!=' ') ch[i++] = c; if(d==' ' && c!=' ') ch[i++] = c; d=c; } ch[i]='\0'; return i; }
yadhus
Messages postés
33
Date d'inscription
dimanche 17 février 2008
Statut
Membre
Dernière intervention
16 mars 2009
3
17 févr. 2008 à 17:50
17 févr. 2008 à 17:50
oui merci beaucoup, cette idée de travailler avec les pointeurs est beaucoup mieux;
Encore merci
Encore merci