Probleme en c
hillal2
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
je suis un débâtant en langage C
j'ai un problème dans un exercice :
pour crée un dictionnaire en C
coude source et
/**********************************************/
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
main(){
//declaration //
char *pch, test, ch, c;
int i, j, n;
int *pabc;
// cree table abc //
int abc[]={};
// demande de nbr de carrachtere//
printf("donner le nombre de carractere : ");
scanf("%d",&n);
// redimontion de pch : char //
pch = (char*) calloc ( n , sizeof ( char ) );
if ( pch == NULL ){
fprintf(stderr,"allocation imposible");
exit (0);
}
// remplissage pch : char //
for(i=0; i<=n-1; i++){
printf("Taper le carractere %d : ",i+1);
scanf("%s",&pch[i]);
getchar();
}
// redimontion de table pabc ///
pabc = (int*) calloc ( n , sizeof ( int ) );
if ( pabc == NULL ){
fprintf(stderr,"allocation imposible");
exit (0);
}
// test sur occurance //
for(i=0; i<=n-1; i++){
c = 0;
for(j=0; j<=n-1; j++){
if(pch[i] == pch[j]){
c = c + 1;
}
}
abc[i] = c;
}
// affichage //
for(i=0; i<=n-1; i++){
printf(" %c => : %d \n",pch[i],pabc[i]);
}
// fin //
getch();
}
/**********************************************/
j'attend le réponse et merci pour tout
je suis un débâtant en langage C
j'ai un problème dans un exercice :
pour crée un dictionnaire en C
coude source et
/**********************************************/
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
main(){
//declaration //
char *pch, test, ch, c;
int i, j, n;
int *pabc;
// cree table abc //
int abc[]={};
// demande de nbr de carrachtere//
printf("donner le nombre de carractere : ");
scanf("%d",&n);
// redimontion de pch : char //
pch = (char*) calloc ( n , sizeof ( char ) );
if ( pch == NULL ){
fprintf(stderr,"allocation imposible");
exit (0);
}
// remplissage pch : char //
for(i=0; i<=n-1; i++){
printf("Taper le carractere %d : ",i+1);
scanf("%s",&pch[i]);
getchar();
}
// redimontion de table pabc ///
pabc = (int*) calloc ( n , sizeof ( int ) );
if ( pabc == NULL ){
fprintf(stderr,"allocation imposible");
exit (0);
}
// test sur occurance //
for(i=0; i<=n-1; i++){
c = 0;
for(j=0; j<=n-1; j++){
if(pch[i] == pch[j]){
c = c + 1;
}
}
abc[i] = c;
}
// affichage //
for(i=0; i<=n-1; i++){
printf(" %c => : %d \n",pch[i],pabc[i]);
}
// fin //
getch();
}
/**********************************************/
j'attend le réponse et merci pour tout
2 réponses
Bonjour,
Pas mal d'erreurs en effet.
main(){
Il faut mettre : int main (void) { car main renvoie un int.
int abc[]={};
Le compilateur ne devrait pas trop aimer puisqu'il ne peut pas déterminer la taille du tableau. Il faut que tu spécifies la taille minimum ou que tu définisses la liste.
printf(stderr,"allocation imposible");
Vaut mieux mettre printf(stderr,"allocation impossible\n"); pour forcer l'affichage.
scanf("%s",&pch[i]);
pch[i] est de type char. Donc il faut mettre "%c".
Ou plus simplement : pch[i]=getchar();
printf(" %c => : %d \n",pch[i],pabc[i]);
pabc est initialisée à 0 grâce à calloc. Il ne contiendra rien d'autre puisque tu ne t'en es pas servi ailleurs. Oubli ?
Par contre ton tableau abc peut être utilisé vu que tu as mis abc[i]=c;
Et enfin n'oublie pas le return 0; après ton getch() final.
Corrige toutes ces erreurs. Si ça ne marche toujours pas, reposte le code corrigé dans une balise code (à droite du bouton sougliné), ainsi que le message d'erreur de la part de ton compilateur.
Cdlt,
Pas mal d'erreurs en effet.
main(){
Il faut mettre : int main (void) { car main renvoie un int.
int abc[]={};
Le compilateur ne devrait pas trop aimer puisqu'il ne peut pas déterminer la taille du tableau. Il faut que tu spécifies la taille minimum ou que tu définisses la liste.
printf(stderr,"allocation imposible");
Vaut mieux mettre printf(stderr,"allocation impossible\n"); pour forcer l'affichage.
scanf("%s",&pch[i]);
pch[i] est de type char. Donc il faut mettre "%c".
Ou plus simplement : pch[i]=getchar();
printf(" %c => : %d \n",pch[i],pabc[i]);
pabc est initialisée à 0 grâce à calloc. Il ne contiendra rien d'autre puisque tu ne t'en es pas servi ailleurs. Oubli ?
Par contre ton tableau abc peut être utilisé vu que tu as mis abc[i]=c;
Et enfin n'oublie pas le return 0; après ton getch() final.
Corrige toutes ces erreurs. Si ça ne marche toujours pas, reposte le code corrigé dans une balise code (à droite du bouton sougliné), ainsi que le message d'erreur de la part de ton compilateur.
Cdlt,
Bonsoir à toi,
Je n'est pas encore appris ce langage je ne peut donc t'apporter mon aide mais par contre si personne ne te répond sur ce forum ;
Poste donc ton message sur ce site, le site du zéro est constitué d'une communauté de programmeurs et de webmasteurs très expérimentés.
Cordialement Pochdu12.
Je n'est pas encore appris ce langage je ne peut donc t'apporter mon aide mais par contre si personne ne te répond sur ce forum ;
Poste donc ton message sur ce site, le site du zéro est constitué d'une communauté de programmeurs et de webmasteurs très expérimentés.
Cordialement Pochdu12.
Si aucun type de retour n'est précisé, c'est int par défaut ... Mais c'est quand même une pratique dégueulasse, là on est d'accord ;)
Non. Cela était vrai en pré-ansi. Maintenant les normes C89/90 et C99 ce n'est plus autorisé.