Tableaux en C : help svp !

Fermé
Magenti Messages postés 19 Date d'inscription mercredi 3 mars 2010 Statut Membre Dernière intervention 20 juillet 2012 - 22 avril 2010 à 12:54
Magenti Messages postés 19 Date d'inscription mercredi 3 mars 2010 Statut Membre Dernière intervention 20 juillet 2012 - 22 avril 2010 à 14:49
Bonjour, j'ai du mal avec les tableaux en C. J'ai un exercice où je dois utiliser les tableaux dynamiques mais j'y comprends rien alors je l'ai d'abord fait avec des tableaux statiques.
Je dois écrire une fonction avec un tableau dynamique trié et un entier et renvoyer un 2e tableau trié avec l'entier.
Sans tableau dynamique ça donne ça :

#include <stdio.h>
#include <stdlib.h>
#include "lecture.h"

int f (int T[], int t, int x)
{
int i,n1,n2;
n1=lire_entier();
T[0]=n1;

for (i=1;i<t;i++)
{
n2 =lire_entier();
if (n2<n1)
{
printf("rentrez une valeur superieure \n");
i=i-1;
}
else
{
T[i]=n2;
n1=n2;
}
}

int t2,j;
t2=t+1;
int T2[t2];

for (j=0;j<t2;j++)
{
if ((x>T[i]) && (x<T[i+1]))
{
T2[j]=x;
}
if ((x<T[i]) && (x<T[i+1]))
{
T[i-1]=x;
}
if ((x>T[i]) && (x>T[i+1]))
{
T2[j]=T[i];
}

}
return T2;
}

int affichage (int T[], int t)
{
int i;

for (i=0;i<t;i++)
{
printf("%d \b", T[i]);
}

return 0;

}

int main ()
{
int t,x,t2;
t = lire_entier();
x = lire_entier();
int T[t],T2[t2];

f (T,t,x);

affichage (T2,t2);

return 0;
}

Le problème c'est qu'il marche pas, j'ai du mal avec ce genre de problème :(
Merci d'avance pour votre aide ! ^^

2 réponses

Neliel Messages postés 6146 Date d'inscription jeudi 9 juillet 2009 Statut Contributeur Dernière intervention 20 mars 2017 1 691
Modifié par Neliel le 22/04/2010 à 13:02
Indique moi l'erreur de compilation...
Sinon, crois moi, c'est bien plus facile dynamiquement et plus souple aussi...

en dynamique, pour créer un tableau, tu fais comme ça:

 

int taille = 256; //La taille du tableau 
char *c; //Pointeur sur le tableau 

c = malloc(taille * sizeof(char)); //Création d'un tableau de caractère de 256 carac 



Ensuite tu peux y accéder soit par le pointeur, soit traditionnellement (c[3])




"Trotti Trotta, Monsieur P, y'a des anges qui veulent un bisou..."
0
Magenti Messages postés 19 Date d'inscription mercredi 3 mars 2010 Statut Membre Dernière intervention 20 juillet 2012
22 avril 2010 à 14:49
Ok merci, je vais essayer mais j'ai du mal à voir la différence....faut dire que j'ai un cours pourri où c'est mal expliqué :S
Sinon, codeblocks compile mon algo mais il me renvoie plein de chiffres bizarres, pas ce que je veux en tout cas.
J'ai réussi à créer un tableau qui me trie les éléments au fur et à mesure que je les rentrent mais j'arrive pas à insérer un autre élément qui sera trié lui aussi. Je suis sure que c'est pas compliqué mais je vois vraiment pas lol !
0