Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : aide par rapport a l'appel d'une méthode [ Archives / Au secours ] (natacha86)

lundi 7 février 2005 à 21:12:32 | aide par rapport a l'appel d'une méthode

natacha86

quel est le probleme de ma méthode init_tab ? le programme s'arrete aprse etre passé dans cette méthode, il plante, et ne rentre pas dans la méthode de tri_bulle...
j'ai pas mis tout le programme, c'est normal qu'il y ait un grand menu,


#include <conio.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <time.h>
#include <stdlib.h>

#define MAX 1000000


/************************ programme principal ****************************/

void main(void)
{
    /* déclarations */
     int choix=0,cont;
     cont=1;
     while(cont==1){
           printf("\n\n\t\t\t     ****************\n");
           printf("\t\t\t     *MENU PRINCIPAL*\n");
           printf("\t\t\t     ****************\n\n\n\n");
           printf("\t   TAPEZ :\n\n\n\n");
           printf("\t\t1\t   Pour :\t    Lancer le prog de tri a bulle\n\n");
           printf("\t\t2\t   Pour :\t    Lancer le prog de tri par insertion\n\n");
           printf("\t\t3\t   Pour :\t    Lancer le prog de tri par ext\n\n");
           printf("\t\t4\t   Pour :\t    Lancer le prog de tri shell\n\n");
           printf("\t\t5\t   Pour :\t    Lancer le prog de tri fusion\n\n");
           printf("\t\t6\t   Pour :\t    Lancer le prog de tri rapide\n\n");
           printf("\t\t7\t   Pour :\t    Quitter le programme\n\n\n");
           printf("\t   CHOIX : ");
           scanf("%d",&choix);
           switch(choix)
           {
                 case 1 :
                      init_tab();
                      tri_bulle();
                      break;

                 case 2 : tri_ins();
                      break;

                 case 3 : tri_ext();
                      break;

                 case 4 : tri_shell();
                      break;

                 case 5 : tri_fusion();
                      break;

                 case 6 : tri_rapide();
                      break;

                 default : cont=0;      /* sortie du programme*/
           }
     }
}

/****************************tri bulle*********************************/

void init_tab() {

    int nb,i,j,v,tab[MAX];  /* Déclarations */

    srand(time(NULL));           /* Initialisation du générateur aléatoire avec la fontion time */
    printf("\n\n Nombre de valeurs a trier (du tableau)  : ");
    scanf("%d", &nb);            /* Demande le nombre d'éléments à trier */
    printf("\n");

    for(i=0;i<nb;i++)            /* Remplissage du tableau aléatoirement */
        tab[i]=rand();

    printf("Les valeurs avant le tri :     ");   /* affichage du tableau */
    for(i=0; i<nb;i++)
        printf("\n%d       ",tab[i]);
}

int tri_bulle()
{
    int nb,i,j,v,tab[MAX];  /* Déclarations */

    for (i=0; i<nb; i++)    /* tri */
        for (j=nb-1; j>i; j--)
            if (tab[j-1]>tab[j])
            {
    v=tab[j-1];
                tab[j-1]=tab[j];
                tab[j]=v;
             }

    printf("\n\nLes valeurs apres le tri :");   /* affichage du tableau */
    for(i=0; i<nb;i++)
        printf("\n%d       ",tab[i]);

    system("PAUSE");
}


lundi 7 février 2005 à 22:23:40 | Re : aide par rapport a l'appel d'une méthode

errikke

Il n'y a pas de retour a la fin de chaque methode. Pour une fonction renvoyant un type void, il faut terminer par : return;

mardi 8 février 2005 à 09:13:48 | Re : aide par rapport a l'appel d'une méthode

ymca2003

Tu déclares un tableau de 1000000 int en local dans la fonction c'est à dire sur la pile => elle explose et ton programme plante en sortie de la fonction. On ne déclare jamais de tels tableaux en static, on les alloue dynamiquement avec malloc ou new. Ou alors prend une valeur de MAX un peu plus raisonnable...

errikke -> 'return' est inutile à la fin d'une fonction retournant void.

mardi 8 février 2005 à 10:26:26 | Re : aide par rapport a l'appel d'une méthode

natacha86

c'est le prof qui nous a demandé de faire des test et des grphique par rapport au temps ! c'est pour ca, il faut tester jusqu'a 1000000.
J'suis pas si stupide quand mem
mais si vous voulez poser un post pour m'aider a ce que j'avais demander vous avez le droit ...


mardi 8 février 2005 à 10:39:50 | Re : aide par rapport a l'appel d'une méthode

ymca2003

Si c'est votre prof qui vous a dit de déclarer en local des tableaux de cette taille c'est qu'il a jamais programmé de sa vie (mon post répondait exactement à la question et au problème qui était un stack overflow).

Une autre petite chose ta fonction init_tab initialise un tableau en local donc en sortie de la fonction le contenu est perdu. Il faudrait la passer en global.

voici ce que tu peux faire :
- déclare int* tab en var global
- faire tab = malloc(MAX*sizeof(int)) and init_tab;
- rajouter une fonction free_tab qui va faire free(tab);
=> comme cela toute les fonctions auront accès au tableau qui sera créé dynamiquement.

mardi 8 février 2005 à 12:04:51 | Re : aide par rapport a l'appel d'une méthode

natacha86

je suis une novice, tu peux m'expliquer en faisant des copier collé dans mon prog stp ?



Cette discussion est classé dans : lancer, tri, printf, include, tab


Répondre à ce message

Sujets en rapport avec ce message

a l aiiiiiiiiidddddeeeeeeeee [ par natacha86 ] je ne comprend pas pkoi le programme une fois qu'il a lancé le premier choix du menu a la fin il ne reviens pas au menu, il s'arrete directement, merc menu avec un switch [ par natacha86 ] je ne comprend pas pkoi le programme une fois qu'il a lancé le premier choix du menu a la fin il ne reviens pas au menu, il s'arrete directement, merc help une fonction qui a besoin de vous [ par natacha86 ] Re bonjour a tout le monde, voila j'ai mis tout le prog si vous voulez tester, en fait le pb viens de la fonctino tri_shell(), je ne sais pas pkoi ell pb en c urgenttttttttttttttttt [ par natacha86 ] bonjour, j'ai un probleme avec mon programme, il ne veut pas sortir, j'ai fais un menu et apparement ya un bug mais je ne comprend rien.le code est as Chaine de caractère [ par Thanatoster ] Bonjour a tous, mon problème est le suivant, pour les cours je dois faire un programme d'apres l'énoncé suivant"saisir au clavier des éléments chaine Programme Tri à Bulle [ par tivanbelle ] Bonjour,J'ai fait ce programme en cours, c'est un tri a bullequi tri des valeur donc 2à2, mais le programme ne fonctionne pas. Pouvez vous me dire ce encore un pb en c svp....... [ par natacha86 ] j'ai essayer de séparer les fonctions mais ca ne marche pas...#include #include #include #include #include #define MAX 1000000 aide pour code C [ par tarkos01 ] je voudrais  comprendre les pointeurs et les chaines, j'ai commencé a taper un morceaux de code en C mais il y a un probleme. je ne vois pas lequel ma Suite de Fibonacci [ par BastienL21 ] Bonjour à tous, débutant en C, j'ai écris un code permettant d'éxecuter la suite de Fibonacci en additionnant les deux nombres précédant, stockés dans Aide fonctions [ par Anonymal ] Bonsoir, voilà je dois faire un code où le professeur tape les 20 notes de ses 20 élèves, le programme calculant la moyenne et l'affichant, puis donne


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,733 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.