IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Problème de boucle


Sujet :

C

  1. #1
    Nouveau membre du Club Avatar de YASIR
    Profil pro
    Inscrit en
    Février 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2008
    Messages : 101
    Points : 25
    Points
    25
    Par défaut Problème de boucle
    Bonsoir,

    alors je suis sur une fonction de cryptage de mon programme qui consiste à lire une texte_bin.txt qui contient :

    00010110 (plusieurs blocs de 8bits les uns apres les autres)
    11110010
    11100011
    ...

    et un autre cle_publique.txt qui contient une suite B(i) :

    1 2 5 10 20 30 40 50

    Le but de la fonction est de faire pour chaque ligne ( chaque bloc de 8bits) la somme de chaque bit * B(i)

    Exemple :

    Pour la ligne 1, on a 00010110
    on fait donc 0*1 + 0*2 + 0*5 + 1*10 + 0*20 + 1*30 + 1*40 + 0*50 = C1

    En gros c'est de la forme C1 = bit1*B(1)+ bit2*B(2) + ... + bit2*B(8)
    Et de cette manière on obtient une autre suite C(i)
    avec i=nombre de ligne soit de bloc de 8 bits.

    Voila le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
     
    int calcul_de_c()
    {
        int i;   
        int j;
        FILE *ficbi;
        unsigned long B[8];	
        FILE *fp;
    	char tampon[512];
    	char ligne_lue[512];
    	int nombre_de_ligne = 0;	
    	unsigned long C[8];
    	int h;
     
     
    	ficbi = fopen("cle_publique.txt","r");
        if (ficbi != NULL)
             {     
            printf("\n\n      Pour le cryptage, la suite B(i) sera : \n\n");
     
            fscanf(ficbi,"%d %d %d %d %d %d %d %d ",&B[1] ,&B[2] ,&B[3] ,&B[4] ,&B[5] ,&B[6] ,&B[7] ,&B[8]);
     
            printf("      ");
            for (h=1;h<9;h++)
               {
     
                printf("%d ",B[h]);
               }
            printf("\n\n");
            system("PAUSE");   
    }
     
    	fp=fopen("texte_bin","r");
    	if ((fp = fopen("texte_bin.txt","r")) == NULL)
    	{
    		printf("Impossible d'ouvir le fichier\n\n");
    		return 0;
    	}
    	else
    	{
    		// Calcule le nombre de lignes dans le fichier texte
    		while(fgets(ligne_lue, sizeof(ligne_lue), fp) != NULL)
    		{
    			nombre_de_ligne++;
    		}
     
    		// Positionne le curseur au début du fichier
    		fseek(fp,0,SEEK_SET);
     
     
     
    		for ( i = 0 ; i < nombre_de_ligne ; i++)
    		{
    			// Lire les données mises en forme
                fscanf(fp,"%s",tampon);
                C[i]=0;
     
    			for ( j = 0 ; j < 8 ; j++)
    			{
    				// Calcul le résultat voulu
    				if (tampon[j] == '1')
    				C[i] += B[j];
     
    			}
    			printf("\n\n");
    			// Affiche le contenu du fichier
    			printf("%s",tampon); 
    			// Affiche les résultats voulus
     
    			printf("  --->  C (%d) = %d ",(i+1),C[i]);
    		}
     
            printf("\n\n  CRYPTAGE OK !!!\n  La suite de C est sauvegardee dans texte_crypte.txt\n\n"); 
                  FILE * f = fopen("texte_crypte.txt", "w");
     
            if (f != NULL)
             {
                          for (i=0;i<nombre_de_ligne;i++)
               {
                     fprintf(f, "%d ",C[i]);
               }      
                     fclose(f);
             }
     
    		printf("\n\n");
    		printf("\n\n");
       }
     
    system("PAUSE");
    }
    Mais j'ai un problème ,il effectue bien les opérations mais ne prend pas en compte le 1er bit de chaque ligne, et m'affiche pour C1 et le dernier C des nombres astronomiques...

    Auriez vous une idée SVP

    The computer has the intelligence of anyone who uses it


  2. #2
    Membre habitué Avatar de bobmidou
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2008
    Messages : 121
    Points : 149
    Points
    149
    Par défaut
    salut
    tu es encore dans les 0101010...

    je vais regarder ça ça m'intéresse

    ksk tu as mis dans ton main() ?
    --<< Il n y a que les clous qui ne plantent pas >>---

  3. #3
    Membre habitué Avatar de bobmidou
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2008
    Messages : 121
    Points : 149
    Points
    149
    Par défaut
    salut
    premier remarque :
    fscanf(ficbi,"%d %d %d %d %d %d %d %d ",&B[1] ,&B[2] ,&B[3] ,&B[4] ,&B[5] ,&B[6] ,&B[7] ,&B[8]);
    tu n'a pas commencé par B[0]
    a+
    --<< Il n y a que les clous qui ne plantent pas >>---

  4. #4
    Membre habitué Avatar de bobmidou
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2008
    Messages : 121
    Points : 149
    Points
    149
    Par défaut
    Salut

    Je l'ai essayé avec VC++

    il fonctionne bien ton programme avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    fscanf(ficbi,"%d %d %d %d %d %d %d %d " ,&B[0],&B[1] ,&B[2] ,&B[3] ,&B[4] ,&B[5] ,&B[6] ,&B[7]);
     
            printf("      ");
            for (h=0;h<8;h++)
            {
     
                printf("%d ",B[h]);
             }
    c'est quoi le problème ?



    a+
    --<< Il n y a que les clous qui ne plantent pas >>---

  5. #5
    Nouveau membre du Club Avatar de YASIR
    Profil pro
    Inscrit en
    Février 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2008
    Messages : 101
    Points : 25
    Points
    25
    Par défaut
    Citation Envoyé par bobmidou Voir le message
    salut
    tu es encore dans les 0101010...

    je vais regarder ça ça m'intéresse

    ksk tu as mis dans ton main() ?
    Et bien ds mon main j'ai mis simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    int main(){
        calcul_de_c();
      }

    The computer has the intelligence of anyone who uses it


  6. #6
    Nouveau membre du Club Avatar de YASIR
    Profil pro
    Inscrit en
    Février 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2008
    Messages : 101
    Points : 25
    Points
    25
    Par défaut
    Citation Envoyé par bobmidou Voir le message
    salut
    premier remarque :


    tu n'a pas commencé par B[0]
    a+
    Merci bobmidou encore une fois !!!! c'était bien ça l'erreur !!
    je suis soulagé!

    The computer has the intelligence of anyone who uses it


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de boucles imbriquées
    Par Gnux dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 09/12/2005, 20h26
  2. [Tableaux] Problème avec boucle
    Par MYster dans le forum Langage
    Réponses: 6
    Dernier message: 11/11/2005, 18h39
  3. Problème de boucle
    Par TheUltimaSephiroth dans le forum C
    Réponses: 8
    Dernier message: 10/10/2005, 13h58
  4. Problème de boucle
    Par Louis-Guillaume Morand dans le forum Langage SQL
    Réponses: 3
    Dernier message: 25/09/2005, 09h10
  5. Problème de boucle
    Par basclln dans le forum C++
    Réponses: 19
    Dernier message: 02/04/2005, 09h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo