Exercice c avec vecteur
Résolu
vladimir
-
vladimir -
vladimir -
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;
}
}
}
}
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;
}
}
}
}
A voir également:
- Exercice c avec vecteur
- Vecteur sur word - Forum Word
- Traitement d'exercice - Forum Bureautique
- Vecteur en c - Forum C
- Exercices word 2019 avec corrigés pdf - Forum Word
- Fleur d'encre 5eme corrigé exercice ✓ - Forum PDF
7 réponses
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
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
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!!
et je ne dois pas utiliser de fonction!!
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"); }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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]);}
}
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]);}
}