Problème dans 2 exo
Résolu/Fermé
man r.
Messages postés
11
Date d'inscription
samedi 30 mars 2013
Statut
Membre
Dernière intervention
1 juin 2013
-
25 mai 2013 à 13:41
man r. Messages postés 11 Date d'inscription samedi 30 mars 2013 Statut Membre Dernière intervention 1 juin 2013 - 28 mai 2013 à 00:50
man r. Messages postés 11 Date d'inscription samedi 30 mars 2013 Statut Membre Dernière intervention 1 juin 2013 - 28 mai 2013 à 00:50
A voir également:
- Problème dans 2 exo
- 2 comptes whatsapp - Guide
- 2 ecran pc - Guide
- Word numéro de page 1/2 - Guide
- Jdownloader 2 - Télécharger - Téléchargement & Transfert
- Fusionner 2 pdf - Guide
4 réponses
man r.
Messages postés
11
Date d'inscription
samedi 30 mars 2013
Statut
Membre
Dernière intervention
1 juin 2013
25 mai 2013 à 20:50
25 mai 2013 à 20:50
???
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 835
25 mai 2013 à 22:16
25 mai 2013 à 22:16
Je n'ai regardé que le premier exo.
Il faut passer l'adresse de la variable pour pouvoir modifier sa valeur.
Dans main() -> allouer(&t,degre);
Dans allouer() :
void allouer(int ***t,int dim){
int i;
*t=(int**)malloc(dim*sizeof(int*));
for(i=0;i<dim;i++) (*t)[i]=(int*)malloc((i+1)*sizeof(int));
}
N'oublie pas de modifier le prototype.
Cdlt,
Il faut passer l'adresse de la variable pour pouvoir modifier sa valeur.
Dans main() -> allouer(&t,degre);
Dans allouer() :
void allouer(int ***t,int dim){
int i;
*t=(int**)malloc(dim*sizeof(int*));
for(i=0;i<dim;i++) (*t)[i]=(int*)malloc((i+1)*sizeof(int));
}
N'oublie pas de modifier le prototype.
Cdlt,
man r.
Messages postés
11
Date d'inscription
samedi 30 mars 2013
Statut
Membre
Dernière intervention
1 juin 2013
26 mai 2013 à 01:51
26 mai 2013 à 01:51
merci infiniment, y a pas moyen que tu me dises ce qui va pas dans le second exo (a) ?
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 835
26 mai 2013 à 11:39
26 mai 2013 à 11:39
Dans tes deux codes, tu n'as pas mis #include <stdio.h> et #include <stdlib.h>.
void supprimer(int *t,int nbr,int a, int pos){
t[pos]=t[nbr];
}
A quoi sert la variable a si tu t'en sers pas ?
void triercroissant (int *t, int nbr){
int aide,i,j;
if (t[i]<t[j]){
Attention i et j sont non initialisés à ce moment-là.
void trierdecroissant (int *t, int nbr){
int aide,i,j;
if (t[i]>t[j]){
Idem.
void inserer(int *t,int nbr,int a, int pos){
t[nbr]=t[pos];
t[pos]=a;
}
L'indice nbr n'appartient pas au tableau. L'indice maximum (tel que défini avec ton malloc) est nbr-1. Donc, ça risque de planter. Il faut que tu agrandisses ton tableau avec realloc().
De plus, tu n'insères pas l'élément ici. Tu mets l'élément t[pos] en fin de tableau et l'élément nouveau en indice pos. Insérer consiste à tout décaler vers la droite (boucle for).
Sinon, ton main n'est pas propre. Tu utilises des fonctions pour faire des traitements (très bien) et parfois tu mets les traitements dans le main. Utilise plutôt des fonctions ;-)
void supprimer(int *t,int nbr,int a, int pos){
t[pos]=t[nbr];
}
A quoi sert la variable a si tu t'en sers pas ?
void triercroissant (int *t, int nbr){
int aide,i,j;
if (t[i]<t[j]){
Attention i et j sont non initialisés à ce moment-là.
void trierdecroissant (int *t, int nbr){
int aide,i,j;
if (t[i]>t[j]){
Idem.
void inserer(int *t,int nbr,int a, int pos){
t[nbr]=t[pos];
t[pos]=a;
}
L'indice nbr n'appartient pas au tableau. L'indice maximum (tel que défini avec ton malloc) est nbr-1. Donc, ça risque de planter. Il faut que tu agrandisses ton tableau avec realloc().
De plus, tu n'insères pas l'élément ici. Tu mets l'élément t[pos] en fin de tableau et l'élément nouveau en indice pos. Insérer consiste à tout décaler vers la droite (boucle for).
Sinon, ton main n'est pas propre. Tu utilises des fonctions pour faire des traitements (très bien) et parfois tu mets les traitements dans le main. Utilise plutôt des fonctions ;-)
man r.
Messages postés
11
Date d'inscription
samedi 30 mars 2013
Statut
Membre
Dernière intervention
1 juin 2013
28 mai 2013 à 00:50
28 mai 2013 à 00:50
d'accord, je vous remercie une seconde fois :) !