Probleme avec mon algo et les structures

masterix Messages postés 7 Date d'inscription mardi 7 novembre 2006 Statut Membre Dernière intervention 28 juillet 2008 - 17 déc. 2007 à 13:51
tit_toinou Messages postés 49 Date d'inscription vendredi 1 septembre 2006 Statut Membre Dernière intervention 16 juillet 2008 - 18 déc. 2007 à 20:44
Bonjour à tous,

Voilà mon petit soucis je vient de commencer les structures j'ai beau chercher dans mes cours je ne voit pas où se trouve mon problème, j'aimerais savoir si quelqu'un pourrais débloquer ma situation !
J'aimerais initialiser un tableau de taille 100 (tab1[100]) en indiquant que chaque case sera occupée par un mot de type structure occurence_mot composée d'un mot et d'un nombre dont on ne se servira pas ici, voilà ce que j'ai fais :

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct occurence_mot
{
char chaine[30];
int nb;
};

void compare_mots(struct occurence_mot tab1,int nb_mot)
{
int i,j,k;
i=0;
while (i < 100)
{
        printf("\n Entrez le mot %d :", i + 1);
        scanf("%s",tab1[i].chaine);
        if (tab1[i].chaine[0] == '\0')
        {
            printf("Mot %d incorrect - recommencez\n", i + 1);
            continue;
        }
        i++;
}
}

int main(int argc, char *argv[])
{
struct occurence_mot tab1[100];
int nb_mot=0;

compare_mots(tab1[100],nb_mot);

system("pause");
return 0;
}

si vous pouvez m'aider en m'indiquant quels sont mes erreurs ça me permettrais d'avancer considérablement !

Merci d'avance
A voir également:

4 réponses

julienbj Messages postés 452 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 19 décembre 2008 15
17 déc. 2007 à 13:59
Je ne comprends pas ce que tu veux faire, mais voici les premières erreurs que j'ai pu noter:
Tu veux parcourir le tableau tab1 dans ta fonction compare_mots, alors donne lun tableau à ta fonction.
void compare_mots(struct occurence_mot *tab1, int nb_mot)
et compare_mots(tab1, nb_mots);pour l'appel.

AGILiCOMSavon
0
masterix Messages postés 7 Date d'inscription mardi 7 novembre 2006 Statut Membre Dernière intervention 28 juillet 2008
17 déc. 2007 à 14:09
Bonjour julienbj ! Merci pour ta réponse effectivement c'est un début

Alors pour expliquer simplement, j'ai un tableau tab1 qui peut contenir donc 100 mots
Et pour l'initialisation j'utilise la structure occurence_mot.
A terme je voudrais que tab1[100] contienne x mots ensuite avec la fonction strcomp (je croit) je vais comparer mot a mot les elements du tableau pour voir combien de fois ils se repetent !
J'éspère avoir étais plus claire ?!

J'ai cependant toujours un soucis sur cette déclaration :

scanf("%s",tab1[i].chaine);

J'ai le droit d'écrire ça ici ?

Merci d'avance
0
julienbj Messages postés 452 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 19 décembre 2008 15
17 déc. 2007 à 15:29
Normalement oui.

void compare_mots(struct occurence_mot *tab1,int nb_mot)
{
    int i,j,k;
 
    for (i = 0; i < nb_mot; i++)
    {
       do
       {
            printf("\n Entrez le mot %d :", i + 1);
            scanf("%s",tab1[i].chaine);
       } while (tab1[i].chaine[0] == '\0');
    }
}

int main(int argc, char *argv[])
{
    struct occurence_mot tab1[100];

    compare_mots(tab1, 100);
    system("pause");
    return 0;
}

AGILiCOMSavon
0
tit_toinou Messages postés 49 Date d'inscription vendredi 1 septembre 2006 Statut Membre Dernière intervention 16 juillet 2008
18 déc. 2007 à 20:44
Salut,
met un typedef devant ton premier struct occurence_mot, comme ca tu n'auras plus qu'a mettre occurence_mot !
Lorsque tu déclares un tableau de 100 occurence_mot, les chaines et les nb auront n'importe quelles valeures.
fait une fonction pour les initialiser.

void initOccurence_mot(occurence_mot *pointeur,int taille)
{
int nombre = 0;

while(nombre != taille)
    {
    pointeur[nombre].chaine = ""; //valeure par défaut
    pointeur[nombre].nb = 0; //valeure par défaut
    nombre++;
    }
} // initOccurence_mot()

rappel : j'ai mis .chaine et .nb car pointeur[nombre] revient à faire *(pointeur+nombre), donc il ne faut plus utiliser la flèche
0
Rejoignez-nous