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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de YASIR
    Profil pro
    Inscrit en
    Février 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2008
    Messages : 101
    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

  2. #2
    Membre éprouvé 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
    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() ?

  3. #3
    Membre éprouvé 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
    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+

  4. #4
    Membre éprouvé 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
    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+

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

    Informations forums :
    Inscription : Février 2008
    Messages : 101
    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é!

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

    Informations forums :
    Inscription : Février 2008
    Messages : 101
    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();
      }

+ 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