Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    26

    [C] 'La codifica di Cesare'

    Buonsera, ho un problemino con il seguente programma (solito prog di allenamento per l'uni)



    La codifica crittografica di Cesare consiste nel sostituire ogni carattere con quello che si trova nella k-esima posizione successiva dell’alfabeto. Il numero k rappresenta la chiave (0 < k < 26). Per esempio, con k = 2 : ‘a’ diventa ‘c’, ‘e’ diventa ‘g’, ‘z’ diventa ‘b’. Scrivere un programma che: - Accetti in ingresso una stringa (composta da soli caratteri minuscoli e priva di spazi) e una chiave k (numero intero) - Scriva la versione crittografata della stringa Esempio. Inserire k: 2 Inserire una stringa: ciao Stringa crittografata con k=2: ekcq Inserire k: 4 Inserire una stringa: ciao Stringa crittografata con k=4: gmes
    Bene, il programma cosi come è l'ho fatta e sembra funzionare correttamente, però mi voglio complicare poco poco la vita facendo in modo che se venga inserita una 'Z' si ritorni ad 'A' e non passi a simboli con codifica ascii incrementati di K rispetto a Z.
    Quindi io voglio che se inserisco una parola e si arrivi a Z con gli incrementi di K, la lettera della parola faccia il "giro" e non vada avanti per simboli ASCII

    Avevo provato a fare ciò ma sembri che il programma non entri nel ciclo While...

    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    
    int main()
    
    {
    char parola[30];
    int k,d;
    int i=0;
      
        
    //Putting char by char into an array
     printf("Inserire parola: ");
     scanf("%s",parola);
     
    printf("\n");
    
    //Choosing of K
     printf("Inserire il valore K: ");
     scanf("%d",&k);
     
    //Codified word
     for(d=0; parola[d]!='\0'; d++)
     {        
              while(i<k);
              {
                if(parola[d]=='z')
                
                     parola[d]='a';
                else
                     parola[d]=parola[d]+1; 
                
                i++;     
              }  
     }   
           
    //Showing trasformed word          
     printf("%s\n",parola);
     
    system("pause"); 
    }
    Sono graditi suggerimenti e non soluzioni dirette

    Grazie a tutti per l'attenzione

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    A 'naso', credo che i debba essere azzerata sempre all'interno del for ... che ne dici?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    26
    Mm sicuramente ciò che mi dici tu è qualcosa che va fatto di sicuro, pero continua a non fungere

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Originariamente inviato da ZioDema2
    Mm sicuramente ciò che mi dici tu è qualcosa che va fatto di sicuro, pero continua a non fungere
    Quando scrivi in un forum che qualcosa "non funge", non hai detto molto ...

    Devi sempre dire, se hai errori, quali errori (codice e descrizione) o, se il programma non fa quello che ti aspetti, descrivere il malfunzionamento ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    26
    Perdomani hai ragione,
    in pratica dopo la richiesta di K, il prog non va piu avanti, non accade assolutamente niente e quindi non mi stampa nemmeno la parola teoricamente modificata.
    E come se appunto non entrasse nel 2° ciclo, non riesco proprio a capire perchè non vada :rollo:

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Devi eliminare il ; segnato in rosso in questa riga

    while(i<k);

    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    26
    Ops, voglio sprofondare

    E' nemmeno 1 mese che ho iniziatp

    Grazie per la pazienza oregon

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    No problem ... capita ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    codice:
    stringa[i] = 'a' + (stringa[i] + k) % ('z' - 'a')

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.