// une fonction ordonnerTableau qui classe les valeurs d'un tableau dans l'ordre croissant. Ainsi, un tableau qui vaut {15, 81, 22, 13} doit à la fin de la fonction valoir {13, 15, 22, 81} !
#include <stdio.h>
void ordonnerTableau(long tableau[], long tailleTableau);
int main(int argc, char *argv[])
{
long tab[4] = {15,81,22,13};
Salut, désolé de remuer les vieux sujets mais pourrais tu m'expliquer la ligne
for(t = 1; t < tailleTableau; t++)
stp?
car j'ai essayé sans et j'ai vu que les 2 premiers seulement étaient rangé mais j'ai du mal à comprendre... merci :)
dudulle93
le for que tu ne comprends pas est une notation élémentaire des boucles for en langage objet.
Donc for(int t=1;t<tailleTableau;t++) signifie:
pour un index de type entier à partir de 1
tant que l'index t est inférieur à la taille du tableau
incrémente t (bien que je préfère la notation ++t)
En globale cela veut dire que tu vas boucler de 1 à la taille du tableau -1, et a chaque boucle tu incrémentes ton compteur t.
voila un petit programme de tri croissant dans un tableau unidimensionnel!!..reste a compiler!!
#include<stdio.h>
#include<stdlib.h>
main()
{
int i,n,c,j;
int T[n];
printf("entrer la valeur de n : ");
scanf("%d",&n);
for (i=1;i<=n;i++)
{
printf("T[%d]= ",i);
scanf("%d",&T[i]);
}
for (j=1;j<=n;j++)
{
for (i=1;i<n;i++)
{
if (T[i]<T[i+1])
{
c=T[i];
T[i]=T[i+1];
T[i+1]=c;
}
}
}
for (i=1;i<=n;i++)
//affichage
printf("T[%d]=%d \n",i,T[i]);
system("pause");
}
A Scoleproj,
il peut y avoir un void main()^^ Non il peut pas. Le standard précise que les deux seules prototypes de main autorisés sont : int main (void) ou int main (int argc, char **argv); (on peut remplacer char **argv par char *argv[])
Tout le reste n'est pas autorisé par la norme...
Une convention, c'est quelque chose qu'on a usage de faire bien que non imposé par la norme. Là, ce n'est pas une convention, c'est la norme ISO C89/90 et repris dans C99 qui t'impose : int main (void) ou int main(int argc, char **argv).
D'ailleurs, un compilateur standard n'acceptera pas le prototype void main(). Sinon, c'est qu'il n'est pas bon.
Après si ça t'amuse, tu peux également modifier un compilateur pour qu'il accepte void debut() (au lieu de int main(void))... mais ça ne sera pas portable, au même titre que main(), void main(), ou encore void main(void).
Faire du C standard, c'est faire du code portable, reconnu universellement sur tous les compilateurs C standards et ce, quelque soit l'OS.
Après, libre à toi de mal coder...
Non, c'est un bon compilateur. Encore faut-il savoir correctement l'utiliser...
gcc tout court n'est pas standard. Par contre, il existe plein d'options. Par exemple : gcc -pedantic -ansi (je ne parle pas de la mise en place des warnings, et autres contrôles) permet de s'assurer qu'on fait du code standard.
Pour utiliser l'ISO C99, il faut utiliser -std=c99 mais attention gcc n'est pas encore entièrement compatible C99 (http://gcc.gnu.org/c99status.html Un code qui marche avec gcc tout court n'est pas sûr de passer sur un autre compilateur (même si souvent, cela marche). Alors qu'un code fonctionnant avec les switchs que je t'ai donnés marchera sur n'importe quel autre compilateur standard.
Ton code contient des erreurs.
if((tab[i]) < (tab[i+1])) Puisque i varie de i à N-1 avec le for, la valeur maximale de i+1 sera N. Et tab[N] est hors du tableau...
La fonction main renvoie un int. Donc son prototype est : int main (void)
Et il faut mettre return 0; à la fin.
Ensuite en amélioration :
nombre = rand()%100 +1;
Pourquoi passer par une variable nombre ?
void ordonnerTableau(int tableau[], int tailleTableau){
int i, m, k;
for(k = 0; k < tailleTableau; k++) {
for(i = 1; i < tailleTableau; i++) {
m = tableau[i] - tableau[i - 1];
voila un code qui trie un tableau de manière croissant en langage C:
---------------------------------------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
void trier(int table[],int taille);
int main(int argc, char *argv[])
{
long tab[6] = {150,-83,112,231,5,12};
Voilà tout le programme de tri(sous windows) par la methode trimin, reste à la compiler :
#include<stdio.h>
#include<stdlib.h>
main()
{ int tab[7]="5,89,23,999,2";
int i,j,indmin,q;
for(i=0;i<7;i++)
{ indmin=i;
for(j=i+1;j<7;j++)
if(tab[j]<tab[i]) indmin=j;
q=tab[i];
tab[i]=tab[indmin];
tab[indmin]=q;
}
system("pause");
return 0;
}
Bon courage
bonjour,
helali j'espere ke tou ca se passe bien chez toi,est ce que vous pouvez me dire d'ou je peux trouver des exercices du language c precisement les tableaux comme (tri par insertion,tri normale.... ) avec des pointeur.
alors si vous voulez me contacter voila mon adresse E-mail:alaeand1@hotmail.com
Merci
Réinventer la roue?!
C'est sur mais quand c'est pour apprendre, c'est très utile :)
donc si quelqu'un a une solution car j'ai le même soucis sauf que moi l'utilisateur doit rentrer 8 valeures entre 0 et 255 et j'ai pensé que créer deux tableaux, un stockant les valeures entrées, et un autre pour afficher les valeures triées.
Mais j'ai pas de réelle expérience en algo donc un pti coup de pouce n'est pas de refus
been je vais t'aider si ce forum existe c'est tout de meme pour s'entraider aussi car tout vaut le cout pour apprendre:
#include<stdio.h>/* declaration des bibliotheques */
#include<conio.h>
var
int i,j; /*declaration des variables */
float A[7],temp;
void main()
{
for (i=0;i<7;i++)
{
printf("A[%d]=",i+1);
scanf("%f",&A[i]);
}
printf("affichage du tableau:\n");
for (i=0;i<7;i++)
printf("%.2f\t",A[i]);
printf("resultat du tableau trié:\n");
for (i=0;i<6;i++)
for (j=i+1;j<7;j++)
if (A[i]>=A[ j]
{
temp=A[i];
A[i]=A[ j];
A[ j ] =temp;
}
for (i=0;i<7;i++)
printf("%.2f\t",A[i]);
getch();/*pour retenir l'affichage*/
}
j'esper que ton probleme est resolu
for(t = 1; t < tailleTableau; t++)
stp?
car j'ai essayé sans et j'ai vu que les 2 premiers seulement étaient rangé mais j'ai du mal à comprendre... merci :)
le for que tu ne comprends pas est une notation élémentaire des boucles for en langage objet.
Donc for(int t=1;t<tailleTableau;t++) signifie:
pour un index de type entier à partir de 1
tant que l'index t est inférieur à la taille du tableau
incrémente t (bien que je préfère la notation ++t)
En globale cela veut dire que tu vas boucler de 1 à la taille du tableau -1, et a chaque boucle tu incrémentes ton compteur t.
J'espère que c'est plus clair pour toi
#include <stdlib.h>
void ordonner(int T[],int);
int main(int argc, char *argv[])
{
int T[5]={7,4,5,3,8},i;
ordonner(T,5);
for(i=0;i<5;i++)
{
printf("T[%d]=%d\n",i,T[i]);
}
system("pause");
return 0;
}
void ordonner(int T[],int taille)
{
int i,j,p=0;
for(j=0;j<taille;j++)
{
for(i=0;i<taille;i++)
{
do
{
p=T[i];
T[i]=T[i+1];
T[i+1]=p;
}while(T[i]>T[i+1]);
}
}
}