Programmation en c
kamaldita
-
Marco la baraque Messages postés 996 Date d'inscription Statut Contributeur Dernière intervention -
Marco la baraque Messages postés 996 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
je suis debutante en c , j'ai ecrit un programme qui permet de purger un tableau ( qui elimine les elements qui se repetent mais sans utiliser un autre) je vous serai tres reconnaissante si vous voulez bien y jetter un petit coup d'oeil
et me mettre sur le bon chemein car il ne veu pas se compiler (jutilise dev c++)
merci d'avance pour votre aide qui me sera vital!
#include<stdio.h>
#include<stdlib.h>
#define dim 100
void purger(int[],int*);
main()
{
int a[dim],n,i;
printf("donnez la dimmension de votre tableau\n");
scanf("%d",&n);
printf("entrez les elements de votre tableau\n");
for(i=0;i<n;i++)
scanf("%d",&a[i]);
purger(a,&n);
for(i=0;i<n;i++)
printf("%d\t",a[i]);
system("PAUSE");
return 0;
}
void purger(int a[],int *n)
{
int i,j,k;
for(i=1;i<*n;)
{
for(j=0;j<=i-1;j++)
if(a[i]==a[j]);
break;
for(k=i;k<=*n-2;k++)
a[k]=a[k+1];
(*n)--;
else
i++;}
}
je suis debutante en c , j'ai ecrit un programme qui permet de purger un tableau ( qui elimine les elements qui se repetent mais sans utiliser un autre) je vous serai tres reconnaissante si vous voulez bien y jetter un petit coup d'oeil
et me mettre sur le bon chemein car il ne veu pas se compiler (jutilise dev c++)
merci d'avance pour votre aide qui me sera vital!
#include<stdio.h>
#include<stdlib.h>
#define dim 100
void purger(int[],int*);
main()
{
int a[dim],n,i;
printf("donnez la dimmension de votre tableau\n");
scanf("%d",&n);
printf("entrez les elements de votre tableau\n");
for(i=0;i<n;i++)
scanf("%d",&a[i]);
purger(a,&n);
for(i=0;i<n;i++)
printf("%d\t",a[i]);
system("PAUSE");
return 0;
}
void purger(int a[],int *n)
{
int i,j,k;
for(i=1;i<*n;)
{
for(j=0;j<=i-1;j++)
if(a[i]==a[j]);
break;
for(k=i;k<=*n-2;k++)
a[k]=a[k+1];
(*n)--;
else
i++;}
}
A voir également:
- Programmation en c
- Application de programmation - Guide
- Mettre en veille un programme - Guide
- Programmer en basic sous windows 10 - Télécharger - Édition & Programmation
- Un autre programme est en cours d'installation - Forum Windows 10
- Programmation envoi sms - Guide
3 réponses
As-tu le droit de créer un tableau temporaire ? Cela te permettrait d'avoir un algorithme plus clair, et avec une meilleure complexité.
Bonjour,
je suis debutante en c , j'ai ecrit un programme qui permet de purger un tableau ( qui elimine les elements qui se repetent mais sans utiliser un autre) je vous serai tres reconnaissante si vous voulez bien y jetter un petit coup d'oeil
et me mettre sur le bon chemein car il ne veu pas se compiler (jutilise dev c++)
merci d'avance pour votre aide qui me sera vital! #include<stdio.h>
#include<stdlib.h>
#define taille 100
void purger(int[],int*);
main()
{
int a[taille],n,i;
printf("donnez la dimmension de votre tableau\n");
scanf("%d",&n);
printf("entrez les elements de votre tableau\n");
for(i=0;i<n;i++)
scanf("%d",&a[i]);
purger(a,&n);
for(i=0;i<n;i++)
printf("%d\t",a[i]);
system("PAUSE");
return 0;}
void purger(int a[],int *n)
{
int i,j,k;
for(i=0;i<*n; )
{
for(j=0;j<i;j++)
if(a[i]==a[j])
{
for(k=0;k<*(n-1);k++)
a[k]=a[k+1];
(*n--);
}
else
i++;
}}
je suis debutante en c , j'ai ecrit un programme qui permet de purger un tableau ( qui elimine les elements qui se repetent mais sans utiliser un autre) je vous serai tres reconnaissante si vous voulez bien y jetter un petit coup d'oeil
et me mettre sur le bon chemein car il ne veu pas se compiler (jutilise dev c++)
merci d'avance pour votre aide qui me sera vital! #include<stdio.h>
#include<stdlib.h>
#define taille 100
void purger(int[],int*);
main()
{
int a[taille],n,i;
printf("donnez la dimmension de votre tableau\n");
scanf("%d",&n);
printf("entrez les elements de votre tableau\n");
for(i=0;i<n;i++)
scanf("%d",&a[i]);
purger(a,&n);
for(i=0;i<n;i++)
printf("%d\t",a[i]);
system("PAUSE");
return 0;}
void purger(int a[],int *n)
{
int i,j,k;
for(i=0;i<*n; )
{
for(j=0;j<i;j++)
if(a[i]==a[j])
{
for(k=0;k<*(n-1);k++)
a[k]=a[k+1];
(*n--);
}
else
i++;
}}
Bonsoir,
Le mieux, ce serait déjà de donner l'erreur que devC++ t'affiche, ça nous aiderait pas mal.
Sinon, je suis loin d'être un expert en C, mais je ne saisis pas très bien pourquoi tu passes &n à ta fonction purger et non pas n (ça n'optimise rien du tout vu qu'une adresse ou un int, c'est la même taille donc au niveau de la pile c'est pareil, et je pense que c'est ce qui fait que ton programme ne fonctionne pas car tu fais une erreur par la suite).
De plus, tu dois décaler tes éléments commençant à k=i et non pas à k=0
Essaie donc avec ceci :
Cordialement,
Le mieux, ce serait déjà de donner l'erreur que devC++ t'affiche, ça nous aiderait pas mal.
Sinon, je suis loin d'être un expert en C, mais je ne saisis pas très bien pourquoi tu passes &n à ta fonction purger et non pas n (ça n'optimise rien du tout vu qu'une adresse ou un int, c'est la même taille donc au niveau de la pile c'est pareil, et je pense que c'est ce qui fait que ton programme ne fonctionne pas car tu fais une erreur par la suite).
De plus, tu dois décaler tes éléments commençant à k=i et non pas à k=0
Essaie donc avec ceci :
... void purger(int[],int); ... purger(a,n); ... void purger(int a[], int n) { int i, j, k; for(i = 0; i < n;) { for(j = 0; j < i; j++) { if(a[i] == a[j]) { for(k = i; k < n - 1; k++) { a[k]=a[k+1]; } n--; } else { i++; } } } }
Cordialement,
N'oublie pas de penser au cas où l'utilisateur rentre une dimension supérieure à 100.
#include <stdio.h> #define dim 100 void purger(int[],int*); int main(void) { int a[dim],n,i; printf("donnez la dimmension de votre tableau\n"); scanf("%d",&n); if(n>dim){ fputs("dimension incorrect\n",stderr); return 1; } purger(a,&n); for(i=0;i<n;i++) printf("%d\t",a[i]); putchar('\n'); getchar(); return 0; } void purger(int a[],int *n){ int i=1; while(i<*n){ int j; for(j=0;j<i;j++){ if(a[j]==a[i]){ //décalage int k; for(k=i;k<*n-1;k++) a[k]=a[k+1]; (*n)--; //pour refaire une itération sur le même élément i--; } } i++; } }