IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

[Novice] Fonction qui retourne un tableau d'entiers


Sujet :

C

  1. #1
    Membre confirmé Avatar de Commodore
    Homme Profil pro
    Business manager
    Inscrit en
    Février 2004
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Business manager

    Informations forums :
    Inscription : Février 2004
    Messages : 599
    Points : 632
    Points
    632
    Par défaut [Novice] Fonction qui retourne un tableau d'entiers
    Bonjour,
    ma question est somme toute assez simple:

    je voudrais que ma fonction f retourne un tableau d'entiers...
    comment m'y prendre ?

    bon, un ptit bout de code, ça fait jamais de mal, en plus vous pourrez critiquer mes "noviceries"...


    Explications sur le but de cette fonction : elle prend en paramètre un tableau d'entiers et compte le nombre d'occurrences successives du même nombre.
    Exemple:
    suite[] = 1 1 1 2 2 3 1 1 1 1 2
    et le tableau analyse à 2 dimensions contient ceci après traitement.
    analyse[] = 1 2 3 1 2 //premiere ligne du tableau analyse
    ..........[] = 3 2 1 4 1 //2e ligne du tableau analyse

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    int compterElem(int suite[]) {
     
    	int analyse[65535][2];	//tableau retenant les comptes des nombres
    	int i=0;		//compteur du while
    	int k=0;	        //compteur des éléments du tableau analyse
    	int nb_courant=0;	//pour retenir le nb courant
    	int occurrences=0;	//compteur du nb de chiffres identiques à la suite
     
    	while(suite[i]!=0) {
    		nb_courant=suite[i];
    		while(suite[i]==nb_courant) {
    			i++;
    			occurrences++;
    		}
    		analyse[k][1]=nb_courant;
    		analyse[k][2]=occurrences;
    		i++;
    	}
    	return analyse[][]; //pas bon, je veux retourner un tableau d'entiers
    }

  2. #2
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Il faut renvoyer une adresse obtenue avec un malloc
    Pour représenter ton tableau à deux dimensions, tu peux utiliser un tableau "linéaire", c'est-à-dire que pour simuler tab[5][1] tu écriras tab[5 * longueur ligne + 1] soit dans ton cas tab[5 * 2 + 1]
    Il faut donc que alloues ton tableau par cette instruction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    int *analyse= malloc(2 * 65535 * sizeof *analyse);
      if (analyse== NULL)
      {
         fprintf(stderr, "Pb malloc\n");
         return NULL;
      }
      // maintenant on travaille comme si on avait le tableau
      // en tenant compte de ma remarque sur la notation
    Ta fonction aura comme prototype :
    int *compterElem(int suite[])

  3. #3
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Si ton tableau ne contient pas de 0, lors de la lecteur, tu risques de dépasser la fin du tableau et lire dans des zones où tu ne devrais pas => risque de plantage.

    Il faudrait en plus passer en paramètre la taille de ton tableau (c'est à dire suite)

  4. #4
    Membre confirmé Avatar de Commodore
    Homme Profil pro
    Business manager
    Inscrit en
    Février 2004
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Business manager

    Informations forums :
    Inscription : Février 2004
    Messages : 599
    Points : 632
    Points
    632
    Par défaut
    pour le cas du dépassement de tableau, j'ai pensé à initialiser le tableau "suite[]" avec des 0 partout dès sa création.
    De ce côté là, tout devrait fonctionner normalement.
    merci quand même pour la délicate attention

  5. #5
    Membre confirmé Avatar de Commodore
    Homme Profil pro
    Business manager
    Inscrit en
    Février 2004
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Business manager

    Informations forums :
    Inscription : Février 2004
    Messages : 599
    Points : 632
    Points
    632
    Par défaut
    tout fonctionne maintenant. merci beaucoup

    résolu

  6. #6
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Non résolu c'est en bas à gauche je crois

  7. #7
    Membre confirmé Avatar de Commodore
    Homme Profil pro
    Business manager
    Inscrit en
    Février 2004
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Business manager

    Informations forums :
    Inscription : Février 2004
    Messages : 599
    Points : 632
    Points
    632
    Par défaut
    quelque chose me dit que je le savais depuis longtemps, ça...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment créer une fonction qui retourne un tableau?
    Par Dereck07 dans le forum Delphi
    Réponses: 4
    Dernier message: 26/04/2007, 13h16
  2. [Tableaux] Fonction qui retourne un tableau
    Par benooiit dans le forum Langage
    Réponses: 2
    Dernier message: 05/01/2007, 01h50
  3. Fonction qui retourne un tableau ou 2 variables ? possible ou non
    Par jiojio dans le forum VB 6 et antérieur
    Réponses: 45
    Dernier message: 05/06/2006, 15h00
  4. [VB] Fonction qui retourne un tableau
    Par ptitsoleil87 dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 24/12/2005, 10h52
  5. Fonction qui retourne un tableau
    Par _lara_ dans le forum ASP
    Réponses: 6
    Dernier message: 24/05/2004, 15h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo