Visualizzazione dei risultati da 1 a 2 su 2

Discussione: [C] aiuto esercizio

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2012
    Messaggi
    4

    [C] aiuto esercizio

    ciao ragazzi sono nuova del mondo C e volevo chiedervi una mano su qst esercizio:

    Bisogna scrivere un programma che legga una sequenza di caratteri terminata da . (mediante getchar) e faccia il cifrario di cesare dopo aver inserito in input il codice di cifratura.
    es:
    5 mamma li Turchi
    rfrrf qn Yzwhmn

    21 rfrrf qn Yzwhmn
    mamma li Turchi

    io ho scritto la prima parte che è qst:

    #include <stdio.h>
    int main (void)
    {
    int c, k;
    char spazio = ' ';

    printf("Inserisci chiave di cifratura: ");
    scanf("%d", &k);

    printf("Inserisci testo da cifrare!!\n");

    while ((c = getchar()) != '.'){

    putchar(c+k); //**************

    }
    return 0; }

    teoricamente funziona ma se voglio farlo uguale all'esempio non so' come faccio a stampare il codice di cifratura viscino il testo(prima cosa), seconda cosa il putchar (c+ k) mi da' dei problemi cioè se la lunghezza della parola è piu lunga di k, in compilazione il cursore torna sulla parola e di conseguenza rischio di scriverci sopra(magari con un esempio faccio prima: se inserisco k = 3 e parola "ciao" il cifrario funziona mi stampa fldr, e ok ma il cursore è sopra la f) cosa dovrei fare????
    ultima domanda, come posso utilizzare es. fldr nel mio codice per fare la contro prova???

    grazie in anticipo

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2012
    Messaggi
    214
    Secondo me faresti prima ad allocarti un vettore di un tot di caratteri salvandoti il k-esimo carattere successivo a quello immesso. Intendo una cosa del genere:

    codice:
    int main (void)
    {
    int c, k, i;
    char *cifr; 
     
    
    printf("Inserisci chiave di cifratura: ");
    scanf("%d", &k);
    
    printf("Inserisci testo da cifrare!!\n");
    cifr = (char*) malloc(2048*sizeof(char)); 
    	i=0; 
    	while ((c = getchar()) != '.'){
    		cifr[i] = (c+k);
    		i++; 
    	}
    	
    	printf("%s\n",cifr); 
    return 0; 
    }
    cifr contiene la stringa già cifrata. Occhio perchè manca il controllo sulla lunghezza della chiave: quando arrivi alla 'z' devi tornare indietro, questo va gestito.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.