Bloqué au début de mon algo

Résolu
Darksnakes Messages postés 19 Date d'inscription samedi 21 octobre 2006 Statut Membre Dernière intervention 14 mars 2007 - 21 oct. 2006 à 17:25
Darksnakes Messages postés 19 Date d'inscription samedi 21 octobre 2006 Statut Membre Dernière intervention 14 mars 2007 - 25 oct. 2006 à 10:15
Bonjour tout le monde, je débute en C et voila mon problème

J'aimerais faire un programme qui pour un tableauT[0..N] (toutes les cases initialisés à 1)et un nombre P, me met un 0 toutes les P cases, sachant que: on démare de T[0]
le tableau finale doit contenir que des 0
dès qu'une case obtient la valeurs 0 elle ne compte plus dans la recherche de la P ème case suivante
je redémare à la première case se trouvant  à droite et contenant un 1 de celle que je vient de mettre à 0
je dois afficher l'indice de la case que je met à 0 à chaques fois.

Exemple si mon tableau fait 7 cases(N=6) et que p= 12, l'algorithme m'affichera successivement 4, 3, 6, 5, 2, 1, 0 et mon tableau 1111111 deviendra
1111011
1110011
1110010
1110000
1100000
1000000
0000000

Le seule problème c'est que je ne sais pas comment démarer, je me mélange les pinceaux:

Donc si vous avez une piste pour moi, ce serait cool sachant que je ne connais du C que les rudiments(sa fait à peine deux semaines que j'ai commené)

Yann

4 réponses

Darksnakes Messages postés 19 Date d'inscription samedi 21 octobre 2006 Statut Membre Dernière intervention 14 mars 2007
25 oct. 2006 à 10:15
Bon ben c'est bon j'y suis arrivé, voilà le progrmamme au cas ou cela interresserai certaines personnes!!

#include <stdio.h>


void affichage (int n, int t[])
{
     int i;
     for (i=0;i<n;i++)
         {
          printf("%d ",t[i]);
         }
     printf("\n");   
}


void intialisation (int n, int t[])
{
 int i;
 for (i=0;i<n;i++)
     {
      t[i]=1;
     }   
}
              




int main()
{
   int i,j,n,p,compteur,compteur2;
   printf("Donner un entier n :\n");
   scanf ("%d",&n);
   printf("Donner un entier p :\n");
   scanf ("%d",&p);
   int t [n];
   intialisation (n,t);
   printf("Voici le tableau a l'etat initial: ");
   affichage (n,t);  
   i=0;   
   compteur=0;
   compteur2=0;
   while (compteur2<n)
         {
          while (compteur
3
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
21 oct. 2006 à 18:16
D'abord on pourrait se demander l'utilité d'un tel algorithme (il y a plus simple pour remplir un tableau avec des 0...).
Cela dit ca ne me semble pas si difficile:
-Tu utilises un pointeur (ou bien un index) qui représente l'emplacement courant.
-Ensuite, tu te fais une fonction suivant() qui avant d'une position (c'est a dire qui avance jusqu'a trouver un 1). Tu appelles donc p fois avancer (dans avancer il faut aussi vérifier les débordements).
-A chaque fois que tu écris un 0, tu incrémentes un varaible (initialisée à 0) et tu as fini quand ca variable contient N.
Attention, si tu veux un tableau contenant T[0]...T[N], il faut le déclarer de taille N+1

_____________________________________
Un éditeur de ressources gratuit pour Windows
0
titi035 Messages postés 173 Date d'inscription vendredi 13 janvier 2006 Statut Membre Dernière intervention 10 mai 2010
21 oct. 2006 à 19:42
Oui... A quoi ça peut servir un alogo comme ça? c'est un tp... non?
0
Darksnakes Messages postés 19 Date d'inscription samedi 21 octobre 2006 Statut Membre Dernière intervention 14 mars 2007
21 oct. 2006 à 20:47
Oui c'est un tp,pour nous entrainer a utiliser les itérations
0
Rejoignez-nous