Votre avis pour ce code
Résolu
sawnet007
Messages postés
3
Date d'inscription
Statut
Membre
Dernière intervention
-
sawnet007 Messages postés 3 Date d'inscription Statut Membre Dernière intervention -
sawnet007 Messages postés 3 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
je veux inverser les élément d'un tableau de N cases
voilà le code (mais il ne marche pas comme je veux)
#include<stdio.h>
#include<stdlib.h>
int t[100];
int n,temp,i,j;
void main()
{
system("cls");
printf("Entrer la longueur du tableau\n(Ne dépassé pas 99 éléments)\n");
scanf("%d",&n);
for(i=0;i<=n-1;i++)
{
printf("Entrer l'élément N°%d\n",i+1);
scanf("%d",&t[i]);
}
j=n-1;
for(i=0;i<=n-1;i++)
{
temp=t[i];
t[i]=t[j];
t[j]=temp;
j--;
}
printf("Votre suite devient\n");
for(i=0;i<=n-1;i++)
{
printf("%d ",t[i]);
}
printf("\n");
system("pause");
}
je veux inverser les élément d'un tableau de N cases
voilà le code (mais il ne marche pas comme je veux)
#include<stdio.h>
#include<stdlib.h>
int t[100];
int n,temp,i,j;
void main()
{
system("cls");
printf("Entrer la longueur du tableau\n(Ne dépassé pas 99 éléments)\n");
scanf("%d",&n);
for(i=0;i<=n-1;i++)
{
printf("Entrer l'élément N°%d\n",i+1);
scanf("%d",&t[i]);
}
j=n-1;
for(i=0;i<=n-1;i++)
{
temp=t[i];
t[i]=t[j];
t[j]=temp;
j--;
}
printf("Votre suite devient\n");
for(i=0;i<=n-1;i++)
{
printf("%d ",t[i]);
}
printf("\n");
system("pause");
}
A voir également:
- Votre avis pour ce code
- Code ascii - Guide
- Code puk bloqué - Guide
- Code activation windows 10 - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Code blocks - Télécharger - Langages
4 réponses
Je diminuerais la boucle de moitié et introduirais quelques tests et macros:
Tu pourrais éventuellemnt maintenir la variable j, Mais sur un vecteur de 100000 éléments, il n'y a pas de différence sensible dans la durée de traitement.
Gates gave ^W sold you the windows.
GNU gave us the whole house.(Alexandrin)
johand@osiris: ~/src/CCM/C $ cat reverse.c ;gcc -Wall -o reverse reverse.c ;gcc -Wall -DWITH_J -o reverse_withj reverse.c #include<stdio.h> #include<stdlib.h> #define MAX 10000 #define min(a,b) (a) < (b) ? (a) : (b) #define max(a,b) (a) > (b) ? (a) : (b) int t[MAX]; int n, temp, i, j; int main(int argc, char* argv[]) { /* system("cls"); */ printf("Entrer la longueur du tableau\n(Ne dépassé pas %d éléments)\n", MAX); scanf("%d", &n); n = min(MAX, n); n = max(0, n); for(i=0; i < n; i++) { printf("Entrer l'élément N°%d\n", i+1); scanf("%d", &t[i]); } #ifdef WITH_J j= n-1; for(i=0; i< n/2 ; i++, j--) { temp = t[i]; t[i] = t[j]; t[j] =temp; } #else for(i=0; i< n/2 ; i++) { temp = t[i]; t[i] = t[n - 1 - i]; t[n - 1 - i] =temp; } #endif printf("Votre suite devient:\n"); for(i=0; i < n; i++) { printf("%d ",t[i]); } printf("\n"); return EXIT_SUCCESS; /* system("pause"); */ } johand@osiris: ~/src/CCM/C $ echo 7 10 11 12 13 14 15 16 | ./reverse Entrer la longueur du tableau (Ne dépassé pas 10000 éléments) Entrer l'élément N°1 Entrer l'élément N°2 Entrer l'élément N°3 Entrer l'élément N°4 Entrer l'élément N°5 Entrer l'élément N°6 Entrer l'élément N°7 Votre suite devient: 16 15 14 13 12 11 10 johand@osiris: ~/src/CCM/C $ wc -l data.reverse 100001 data.reverse johand@osiris: ~/src/CCM/C $ time ./reverse < data.reverse > /dev/null real 0m0.012s user 0m0.008s sys 0m0.004s johand@osiris: ~/src/CCM/C $ time ./reverse_withj < data.reverse > /dev/null real 0m0.012s user 0m0.008s sys 0m0.000s
Tu pourrais éventuellemnt maintenir la variable j, Mais sur un vecteur de 100000 éléments, il n'y a pas de différence sensible dans la durée de traitement.
Gates gave ^W sold you the windows.
GNU gave us the whole house.(Alexandrin)
Bonjour,
Mon avis sur le code :
Ce n'est pas void main() mais : int main(void) ou int main(int argc, char **argv) : avec un return 0; en fin.
Evite le system("cls");
Evite les variables globales.
Plutôt que : <= n-1 on met plutôt en C : < n (c'est pareil, mais c'est d'usage).
Vérifie la valeur n pour t'assurer qu'elle est bien inférieure à 100 : sinon ça bugguera.
Mon avis sur le code :
Ce n'est pas void main() mais : int main(void) ou int main(int argc, char **argv) : avec un return 0; en fin.
Evite le system("cls");
Evite les variables globales.
Plutôt que : <= n-1 on met plutôt en C : < n (c'est pareil, mais c'est d'usage).
Vérifie la valeur n pour t'assurer qu'elle est bien inférieure à 100 : sinon ça bugguera.
Salut,
Je l'aurais vu comme ça (Affichage uniquement) :
Le principe est le même dans la 3ème boucle si on veut enregistrer le résultat.
Musicalement,
DJ Fire-Bl@ck.
Je l'aurais vu comme ça (Affichage uniquement) :
Le principe est le même dans la 3ème boucle si on veut enregistrer le résultat.
#include<stdio.h> #include<stdlib.h> int t[100]; int n void main() { system("cls"); printf("Entrez la longueur du tableau\n(Ne dépassez pas 99 éléments)\n"); scanf("%d",&n); system("cls"); for(i=0;i<=n-1;i++) { printf("Entrez l'élément N°%d\n",i+1); scanf("%d",&t[i]); system("cls"); } printf("Votre suite devient :\n"); for(i=n-1;i>=0;i--) { printf("%d ",t[i]); } printf("\n"); system("pause"); }
Musicalement,
DJ Fire-Bl@ck.