Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1140 connectés 

  FORUM HardWare.fr
  Programmation

  [C] une fonction qui retourne un tableau ..

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C] une fonction qui retourne un tableau ..

n°89593
thadawg
Putting knowledge into heads
Posté le 15-01-2002 à 17:23:55  profilanswer
 

Comment créer une focntion qui aurait en argument le nom du tableau souhaité, ainsi que la taille de celui-ci et qui retournerait un tableau, tel que :
 
int * creer_tableau ( nom_du_tableau , nb_ligne , nb_colonne )
 
comment recuperer le tableau qui sort de la fonction ?
 
merci d'avance


---------------
Wigga with Attitude.
mood
Publicité
Posté le 15-01-2002 à 17:23:55  profilanswer
 

n°89596
darkoli
Le Petit Dinosaure Bleu
Posté le 15-01-2002 à 17:28:01  profilanswer
 

Ah ca c'est pas possible en C. En gros tu veux pouvoir créer une variable de type tableau d'entier pendant l'execution du programme. En C ce n'est pas possible je crois.
 
Par contre en javascript tu peux !!!


---------------
Le site de l'année :D (XHTML 1.0 strict) : http://darkoli.free.fr/index.html
n°89605
thadawg
Putting knowledge into heads
Posté le 15-01-2002 à 17:35:04  profilanswer
 

Ok merci de ta reponse  ;)  
 
Bon , du coup , je veux faire plutôt ca :
 
int * creer_tableau ( )  
{
int tab[ligne][colonne];
// initialisation du tableau
}
 
Comment recupérer mon tableau ?
Je veux dire dans main ( ), si j'ai :
 
------
 
main ()
{
xxx = creer_tableau();
}
 
------
 
que dois-je declarer pour xxx ? de manière à recupere un tableau ?
 
merci d'avance


---------------
Wigga with Attitude.
n°89611
El_gringo
Posté le 15-01-2002 à 17:44:12  profilanswer
 

thadawg a écrit a écrit :

Ok merci de ta reponse  ;)  
 
Bon , du coup , je veux faire plutôt ca :
 
int * creer_tableau ( )  
{
int tab[ligne][colonne];
// initialisation du tableau
}




 
Marchera pas !
tu peut pas créer de tableau avec des variables de cette façon: ligne et colone doivent être des constantes !
 

thadawg a écrit a écrit :

 
Comment recupérer mon tableau ?
Je veux dire dans main ( ), si j'ai :
 
------
 
main ()
{
xxx = creer_tableau();
}
 
------
 




au mieux, tu peux récupérer un pointeur vers ton tableau (ce qui, en passant, est la même chose qu'un tableau, la simplicité d'écriture en moins !

n°89612
tgrx
My heart is pumping for love
Posté le 15-01-2002 à 17:45:05  profilanswer
 

:??:  
 
int* tableau= creer_tableau()

n°89631
thadawg
Putting knowledge into heads
Posté le 15-01-2002 à 18:02:52  profilanswer
 

Merci pour vos reponses  :)  
 
Une fois "int* tableau= creer_tableau() " écrit, comment je récupère les valeurs qui sont dans tableau ?


---------------
Wigga with Attitude.
n°89632
VisualC++
J'va y penser ...
Posté le 15-01-2002 à 18:04:38  profilanswer
 

tableau[i]


---------------
VT ... Vaucluse / Vrille(euse :sarcastic: ) c'est pareil tant qu'il y a l'humour :D
n°89647
El_gringo
Posté le 15-01-2002 à 18:21:46  profilanswer
 

VisualC++ a écrit a écrit :

tableau[i]  




non !
 
 
La je pars, g vraiement pas le temps de répondre... demain.

 

[edtdd]--Message édité par El_Gringo--[/edtdd]

n°89648
HelloWorld
Salut tout le monde!
Posté le 15-01-2002 à 18:24:27  profilanswer
 

tu peux faire une bidouille proche de ce que tu souhaites:

Code :
  1. void creer_tableau(int ** Tab , int Lignes , int Colonnes)
  2. {
  3.     *Tab = realloc(*Tab, Lignes * Colonnes * sizeof(int));
  4. }
  5. int * MonTableau;
  6. void main(void)
  7. {
  8.     int * MonTableau = NULL;
  9.     int nb_lignes = 10;
  10.     int nb_colonnes = 20;
  11.     creer_tableau(&MonTableau, nb_lignes, nb_colonnes);
  12.     MonTableau[3 * nb_colonnes + 5] = 20; /* pour acceder à MonTableau[3][5] */
  13. }


 
ou meme (pareil ...)
 

Code :
  1. int * creer_tableau(int * Tab , int Lignes , int Colonnes)
  2. {
  3.     return realloc(Tab, Lignes * Colonnes * sizeof(int));
  4. }
  5. void main(void)
  6. {
  7.     int * MonTableau = NULL;
  8.     int nb_lignes = 10;
  9.     int nb_colonnes = 20;
  10.     MonTableau = creer_tableau(MonTableau, nb_lignes, nb_colonnes);
  11.     MonTableau[3 * nb_colonnes + 5] = 20; /* pour acceder à MonTableau[3][5] */
  12.     nb_lignes = 30;
  13.     MonTableau = creer_tableau(MonTableau, nb_lignes, nb_colonnes);
  14.     /* nouvelle taille 30 * 20 - Attention à ne pas toucher au nombre de colonnes (la largeur)*/
  15. }


 
Le probleme, c'est qu'il faut penser à libérer tout ça après.
 
"int * creer_tableau ( )  
{  
int tab[ligne][colonne];  
// initialisation du tableau  
}"
 
ce code est faux pour 2 raisons :
    -pas d'initialisation dynamique possible : int tab[<variable>]; n'est pas possible
    -tu renvois un tableau créé localement = qui n'existera plus des que tu quitteras ta fonction.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°89649
thadawg
Putting knowledge into heads
Posté le 15-01-2002 à 18:26:18  profilanswer
 

Citation :

tu renvois un tableau créé localement = qui n'existera plus des que tu quitteras ta fonction.


 
Merci bcp , c'était exactement ca mon problème !


---------------
Wigga with Attitude.
mood
Publicité
Posté le 15-01-2002 à 18:26:18  profilanswer
 

n°89702
thadawg
Putting knowledge into heads
Posté le 15-01-2002 à 21:10:05  profilanswer
 

Merci encore, mais un pb subsiste : j'ai du mal a mettre le tableau ainsi crée en argument d'une autre fonction, ca donne :
 
--------------------------
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
char lireligne(char s[])
{
     int c,i;
 
     i=0;
     printf("saisir la ligne\n" );
     while ((c=getchar())!='\n';)
           s[i++]=c;
     if (c == '\n';)
          s[i++] = c;
    s[i] = '\0';
}
 
/*************************************************
*****************************/
 
int * creer_tableau(int * Tab , int Lignes , int Colonnes)
{
   return realloc(Tab, Lignes * Colonnes * sizeof(int));
}
 
/*************************************************
*****************************/
void recherche_fonction( char str[], char str2[], int k, int * tab[][])
{
int i=0,j=0,m=0,n=0;
int * MonTableau = NULL;
   int nb_lignes = 1;
   int nb_colonnes = 4;
   char * pch;
 
   MonTableau = creer_tableau(MonTableau, nb_lignes, nb_colonnes);
 
 
 
 
pch=strstr(str,str2);
printf("%s\n",pch);
 
 
     for (n = 0; n < nb_colonnes; n++)
     {
         if (pch==NULL) {
            MonTableau[n * nb_colonnes + k] = -1;
            }
 
         else {
         MonTableau[k * nb_colonnes + n] = pch-str+1;
         pch = strstr (pch+3,str2);
         nb_lignes++;
         printf("on augmente" );
         MonTableau = creer_tableau(MonTableau, nb_lignes, nb_colonnes);
         }
     }
 
 
/* impression tableau */
for (j = 0; i < nb_colonnes; j++)
{
    for (i = 0; i < nb_lignes ; i++)
    {
        printf("%d\t",MonTableau[i * nb_colonnes + j]);
    }
}
/* fin impression tableau */
 
}
/******************************************************************************/
 
 
void main(void)
{
    char ligne[100];
    char ligne2[3];
    int * MonTableau = NULL;
    int i=0,j=0;
    int n;
 
 
    lireligne(ligne);
    recherche_fonction(ligne , "cos" , 0 , MonTableau);
 
 
 
   //MonTableau[3 * nb_colonnes + 5] = 20; /* pour acceder à MonTableau[3][5] */
 
   //nb_lignes = 30;
   //MonTableau = creer_tableau(MonTableau, nb_lignes, nb_colonnes);
 
   /* nouvelle taille 30 * 20 - Attention à ne pas toucher au nombre de colonnes (la largeur)*/
 
 
 
 
 
}
--------------------
 
Je comprends pas pourquoi ca me sort un tableau infini ?


---------------
Wigga with Attitude.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [C] une fonction qui retourne un tableau ..

 

Sujets relatifs
[ C ] fonction pour recuperer le code ASCII d'un caractere HELP !!!affichier une page dans un tableau
[C++] Tableau de Pointeurs Multi-dimension[php] fonction printer
[Newbie] Passage par adresse d'un tableau de structure[VB] Tableau en mémoire
[Delphi] Identifier le déclencheur d'une fonction :)[c++] probleme pour une fonction :(
[HTML] rendre le scrollbar invisible en gardant ca fonctionNeed help ! Tableau de pointeurs en c++
Plus de sujets relatifs à : [C] une fonction qui retourne un tableau ..


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR