Calcule de 0 et 1 dans un tableau
Résolu/Fermé
elattarmh
Messages postés
8
Date d'inscription
lundi 31 décembre 2012
Statut
Membre
Dernière intervention
7 mars 2013
-
6 janv. 2013 à 17:58
elattarmh Messages postés 8 Date d'inscription lundi 31 décembre 2012 Statut Membre Dernière intervention 7 mars 2013 - 6 janv. 2013 à 22:20
elattarmh Messages postés 8 Date d'inscription lundi 31 décembre 2012 Statut Membre Dernière intervention 7 mars 2013 - 6 janv. 2013 à 22:20
A voir également:
- Calcule de 0 et 1 dans un tableau
- Tableau croisé dynamique - Guide
- Tableau ascii - Guide
- Comment faire un tableau - Guide
- Trier un tableau excel - Guide
- Void(0) ✓ - Forum Réseaux sociaux
3 réponses
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
Modifié par KX le 6/01/2013 à 18:39
Modifié par KX le 6/01/2013 à 18:39
Je me perds pas mal dans ton code, avec tes couleurs, tes indices, blanc, noir... à quoi tout cela sert-il ?
#include <stdlib.h> #include <stdio.h> #define max 16 int main() { int t[max]={0,0,0,0,0,1,1,1,0,0,0,0,1,1,0,0}; int resultat[max]; int k; int index = 0;// indice du tableau resultat resultat[0]=1; for(k=1; k<max; k++) { if (t[k]==t[k-1]) resultat[index]++; // on ajoute 1 à la case courante else resultat[++index]=1; // on passe à la case suivante } for(k=0; k<=index; k++) printf("%d ",resultat[k]); system("PAUSE"); return 0; }La confiance n'exclut pas le contrôle
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
6 janv. 2013 à 18:39
6 janv. 2013 à 18:39
Quelques remarques sur ton code :
resultat=(int *)malloc(20*sizeof(int*));
Attention, ce n'est pas sizeof(int*) mais sizeof(int). Le tableau contient des int, pas des int*.
Correction : resultat=malloc(20*sizeof(int));
Le cast est inutile.
Et pourquoi pas simplement : int resultat[20] ? Voire même int resultat[max]; ?
Pourquoi commencer la comparaison avec couleur=0 ? Si ton tableau commence par 1, ça risque de foirer. Il faut plutôt faire couleur=t[0];
et commencer la boucle k à 1;
Sinon, regarde celui de KX, plus optimisé.
resultat=(int *)malloc(20*sizeof(int*));
Attention, ce n'est pas sizeof(int*) mais sizeof(int). Le tableau contient des int, pas des int*.
Correction : resultat=malloc(20*sizeof(int));
Le cast est inutile.
Et pourquoi pas simplement : int resultat[20] ? Voire même int resultat[max]; ?
Pourquoi commencer la comparaison avec couleur=0 ? Si ton tableau commence par 1, ça risque de foirer. Il faut plutôt faire couleur=t[0];
et commencer la boucle k à 1;
Sinon, regarde celui de KX, plus optimisé.
elattarmh
Messages postés
8
Date d'inscription
lundi 31 décembre 2012
Statut
Membre
Dernière intervention
7 mars 2013
1
6 janv. 2013 à 22:17
6 janv. 2013 à 22:17
merci bien pour les remarques ! effectivement l'idée de KX est trés simple et utile
elattarmh
Messages postés
8
Date d'inscription
lundi 31 décembre 2012
Statut
Membre
Dernière intervention
7 mars 2013
1
6 janv. 2013 à 22:20
6 janv. 2013 à 22:20
merci KX, je ne sais pas pourquoi j'ai compliqué les choses ! votre idée est plus simple, et c'est ça ce que je veux .