Exercice c avec vecteur

Résolu/Fermé
vladimir - 20 nov. 2007 à 17:33
 vladimir - 21 nov. 2007 à 08:42
Bonjour,
il faut que j'écrive un programme qui remplit un vecteur de 15 nombres aléatoires compris entre 10 et 50, un deuxième vecteur de 0 à 14 qui seront les indices sur le premier le vecteur . il faut trier les indices pour avoir les valeurs du premier vecteur en ordre croissant. on doit afficher les deux vecteurs avant le tri et après le tri!
j'ai commencé le code mais je suis bloqué, quelqu'un peut m'aider svp
merci

#define MAX 15
#include <stdio.h>
#include<stdlib.h>
void main (void)


{
int v1[MAX], v2[MAX],i;

int p,j;

double x;

for (i = 0;i<MAX;i++)
{
v1[i]=(rand()%41)+10;
v2[i]=si;
}

printf("contenu du premier vecteur");


printf("contenu du deuxieme vecteur);


for(i=0;i<MAX;i++)
{
printf("%d",&v2[i]);
}

/* tri par insertion*/



for (i = 1; i < MAX; i++)
{

x = t[i];


for(p = 0; t[p] < x; p++);



for (j = i-1; j >= p; j--)
{
t[j+1] = t[j];
}

t[p] = x;
}
}




}















}

7 réponses

mamiemando Messages postés 33372 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 22 novembre 2024 7 802
20 nov. 2007 à 17:38
Pour le tri tu devrais utiliser la fonction qsort ça me paraît plus simple que de recoder un tri par insertion.
http://www.linux-kheops.com/doc/man/manfr/man-html-0.9/man3/qsort.3.html
http://www.lri.fr/~aze/page_c/aide_c/show_xml.php?file=qsort.xml

Est ce que ton exercice est impérativement à faire en C ou peut être codé en C++ ? Car si tu peux utiliser du C++ autant utiliser des std::set qui ordonneront automatiquement tes valeurs.
https://community.hpe.com/t5/custom/page/page-id/HPPSocialUserSignonPage?redirectreason=permissiondenied&referer=https%3A%2F%2Fcommunity.hpe.com%2Ft5%2FServers-Systems-The-Right%2FSGI-com-Tech-Archive-Resources-now-retired%2Fba-p%2F6992583

Petite recommandation : ta fonction main est sensée retournée un int (0 si tout va bien, un code d'erreur sinon).

Bonne chance
0
oui je dois le faire en c et je n'ai le choix qu'avec le tri bulle , extraction ou insertion!!
et je ne dois pas utiliser de fonction!!
0
SINA.L Messages postés 34 Date d'inscription mardi 20 novembre 2007 Statut Membre Dernière intervention 30 décembre 2007 2
20 nov. 2007 à 18:53
le code qu'on vous a envoyé est faux je v vous envoyer un bon
0
mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 436
20 nov. 2007 à 22:18
essaye ça :

#define MAX 15
#include <stdio.h>
#include<stdlib.h>

void main (void)
{
    int v1[MAX],v2[MAX],j,tps,tps2,i;

    for (i=0;i<MAX;i++)
    {
        v1[i]=(rand()%41)+10;
        v2[i]=i;
    }
    printf("contenu du vecteur 1\n");
        for(i=0;i<MAX;i++)
            printf("%d ",v1[i]);
            printf("\n");
            printf("contenu du vecteur 2\n");
        for(i=0;i<MAX;i++)
            printf("%d ",v2[i]);
            printf("\n");

/*tri*/
for(i=0;i<(MAX-1);i++)
    for(j=i+1;j<MAX;j++)
        if(v1[i] > v1[j]){
            tps = v1[i];
            v1[i] = v1[j];
            v1[j] = tps;
            tps2 = v2[i];
            v2[i] = v2[j];
            v2[j] = tps2;}

    printf("contenu du vecteur 1 apres le tri\n");
        for(i=0;i<MAX;i++)
            printf("%d ",v1[i]);
            printf("\n");
    printf("contenu du vecteur 2 apres le tri\n");
        for(i=0;i<MAX;i++)
                printf("%d ",v2[i]);
                printf("\n");
    }
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
SINA.L Messages postés 34 Date d'inscription mardi 20 novembre 2007 Statut Membre Dernière intervention 30 décembre 2007 2
20 nov. 2007 à 23:55
thank you mype !!!
0
merci beaucoup!!!!!!!!!
0
id.prog Messages postés 57 Date d'inscription mardi 23 octobre 2007 Statut Membre Dernière intervention 5 septembre 2009 20
20 nov. 2007 à 18:33
salut,
je pense que tu es un debutant en programmation , parce que tu fait beaucoup de betise, essaye se code:
#define MAX 15
#include <stdio.h>
#include<stdlib.h>
void main (void)
{
int v1[MAX], v2[MAX];
int t,i,j;
printf("declarer votre premier vecteur\n");
for(i=0;i<MAX;i++)
{
scanf("%d",&v1[i]);
}
for(i=-1;i<14;i++)
{
v2[i]=i;
}
printf("contenu du premier vecteur");
for(i=0;i<MAX;i++)
{
printf("v1=",v1[i]);
}
printf("contenu du deuxieme vecteur");
for (i=0;i<MAX;i++)
{
printf("v2=",v2[i]);
}
/*tri par insertion*/
for(j=2;j<MAX;j++)
{
t=v1[j];
i=j;
while((v1[j]<v1[i-1]) && (i>1)) do{
v1[i]=v1[i-1];
i=i-1;
}
v1[i]=t;
}
for(i=0;i<MAX;i++){
printf("v1=",v1[i]);}
for(i=-1;i<14;i++){
printf("v2=",v2[i]);}
}

-1