begin process at 2012 05 29 18:23:45
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Pb à l'exécution


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Pb à l'exécution

lundi 12 septembre 2005 à 06:00:12 | Pb à l'exécution

tomalille

Bonjour,
J'ai un petit pb à l'execution de ce prog. Il compile et les liens sont fait sans erreur ni warning.
Par contre lorsque j'appelle le sous-programme "denombrement", l'ordi plante. Apparement, il fait bien le tab2 et le met dans 0 dans toutes les cases et ensuite il plante. Je ne comprend vraiment pas pourquoi, l'algorithme me semble bon en plus. Est-ce que la taille du tableau peut jouer: tab2 peut avoir 30000 cases?

Voici mon programme:

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

void denombrement(int* tab,int max);

void main(void)
{
 //Initialisation des variables
  int max =0;
  int i = 0;
  int temp = 0;
  int* tab = NULL;
  printf("\n Entrer la longueur du tableau \n");
  scanf("%d",&max);
  tab = (int*)malloc(max*sizeof(int));

  // int tab[8]={5,10,6,7,3,6,9,0};

 //valeur au hasard
 srand( (unsigned)time( NULL ));
 for( i = 0;i < max;i++ )
 tab[i]=rand();

   //Présentation du tableau
  printf("\n **** Tableau de depart **** \n");
  for(i=0;i<max;i++)
   printf("%d \n",tab[i]);
 
  denombrement(tab,max);

  free(tab);
}

 void denombrement(int* tab,int max)
{
int i = 0;
int k = 0;
int lg = max;
int* tab1 = NULL; // Tableau de compte
//int* tab2 = NULL; // Tableau de résultats

 //recherche de la valeur maximale du tableau
for(i=0;i<max;i++)
 {
  if(tab[i]>k)
   k=tab[i];
 }
 //Construction du "tableau de compte"
tab1 = (int*)malloc(k*sizeof(int));
for(i=0;i<k;i++)

 tab1[i]=0;
}
/*
for(i=0;i<max;i++)
{
 tab1[tab[i]]=tab1[tab[i]]+1;
}
  
for(i=1;i<k;i++)
{
 tab1[i]=tab1[i]+tab1[i-1];
}
 
 //Construction du tableau de résultats
//tab2 = (int*)malloc(lg*sizeof(int));

for(i=0;i<lg;i++)

 tab2[i]=0;
}

for(i=max;i=1;i--)
{
 tab2[tab1[tab[i]]]=tab[i];
}
*/
//free(tab2);
free(tab1);
}

Une petite indication m'aiderait beaucoup. Merci d'avance!
tom

lundi 12 septembre 2005 à 06:29:27 | Re : Pb à l'exécution

AlexMAN

Membre Club
Vu l'heure qu'il est, ton code me semble bon a part un petit truc :

for(i=max;i=1;i--)
{
 tab2[tab1[tab[i]]]=tab[i];
}

i = max va causer un 'petit' debordement de tampon, dans tab[], ptet ben dans tab1[] (si k <= max), et dans tab2[] assurément. Partir avec : for(i = max - 1; i >= 0; --i) {} peut peut etre arranger les choses. Mais attention, rien ne garantit que k sera > max, alors attention a comment tu penses ton prog...

+2(p - n)
lundi 12 septembre 2005 à 20:24:08 | Re : Pb à l'exécution

tomalille

effectivement, ca pourrait poser problème, mais ce n'est pas le cas car souvent k=25000 voire 30000, les veleurs étant prises au hasard. Au niveau de l'algorithme, il est bon car je viens d'aller le vérifier à la bibliothèque...bizare!!
lundi 12 septembre 2005 à 21:05:56 | Re : Pb à l'exécution

tomalille

Réponse acceptée !
j'ai trouvé mon erreur, c'était un problème d'indice.
Merci bcp
Thomas


Cette discussion est classée dans : int, tableau, tab, max, tab1


Répondre à ce message

Sujets en rapport avec ce message

tri tableau en ligne [ par TWITTI ] bonjour , je suis etudiant en mécanique et la programmtion c est embetant pour moi.J ai un probleme sur mon programme main().Je n arrive pas a faire Help! Pb de spécif en C [ par tomalille ] Bonjour, je suis en train d'écrire un programme et je voudrai faire une fonction qui renvoit un tableau d'entier.Je n'arrive pas à faire la spécif.Vou problème avec des listes > 30 éléments [ par tomalille ] Bonjour,je finalise un programme qui fonctionne parfaitement sauf que je ne peux pas travailler avec une liste de plus de 30 éléments pour le tri par tableau [ par imanedaoudi ] Salut,Je veux récuperer le tableaux triée sans faire return, avec ce programme je recupere le tableau non trier ,comment faire pour recuperer le tab t Un tableau en variable globale [ par nisaloncaje ] Rebonjour a tous,Je désirerais maintenant que mon tableau qui a pour dimension tab soit accessible à une fonction appelé dans main() :j'ai la syntaxe Problemes ac les tableau [ par alussk ] ce code doit renvoyer la niemes plus grande valeur d'un tableau d'entier. il ne marche pas donc si vous comprenez pourquoi éclairez moi svp #include probleme a la creation d'une dll [ par anthonycosson ] salut a tous donc voila mon probleme, j'ai fait une classe et ensuite j'ai voulu la mettre en dll mais lorsque je compile cette erreur la s'affiche qu fonctions sur les tableau [ par micoo86 ] Bonjour,en faite j'ai fait un programme avec le tableau (somme,affichage,minimum,maximum)mais j'arrive pas a faire le rest de l'exercice.si quelqu'un Allocation dynamique dans une fonction [ par Veovis ] Salut,Toujours dans mon projet de TP, j'ai un petit soucis avec l'allocation dynamique dans une fonction. Ce que je voudrais faire c'est quand le tabl Fonction qui retourne un tableau [ par Kurul1 ] Bonjour à tous   J'ai une classe contenant un tableau a deux dimensions comme variable private  Ce que je voudrais c'est une fonction ayant pour param


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,952 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales