Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    108

    rotazione carattere array

    Ragazzi allora vi spiego...
    Il mio problema è che nn riesco a capire come posso far tornare indietro la lettura di un array...nel senso se ho un array di 26 caratteri e voglio tenere bloccata la posizione di un carattere tipo 'b' e leggere il carattere con la posizione 46 (1 (posizione della b) + 45)...

    In pratica devo risolvere questo esercizio:

    Inserisco un carattere : x
    Rotazione : 37
    x + 37 = i

    Devo tener fermo il carattere iniziale e applicate una rotazione del caratteri dell'alfabeto.

    Grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    non si capisce, per cui facciamo un esempio concreto...
    codice:
    array = a b c d e
    tengo fermo "b" (posizione 1) e voglio prendere il 7° carattere
    codice:
    b c d e a | b c d e a | b c d e a
    0 1 2 3 4   5 6 7 8 9  .....
    allora, la posizione sarà: posizione originale + (offset mod lunghezza_set):

    codice:
    pos = 1 + 7 % 5 = 1 + 2 = 3
    quindi
    codice:
    array[3] = d
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    108
    Ho provato a scrivere del codice secondo la tua risposta...
    codice:
    String s = in.nextLine();
    		if(s == s.toUpperCase())
    			s = s.toLowerCase();
    		char d = s.charAt(0);
    		
    		int pos = 0, pos2 = 0;
    		
    		char [] array = new char[26];
    		int x = 0;
    		
    		for(char c='a';c<='z';c++){
    			array[x] = c;
    			x++;
    		}
    		
    		for(int i=0;i<26;i++){
    			if(array[i] == d)
    				pos = i;	
    		}
    		
    		System.out.print("Rotazione --> ");
    		int rot = in.nextInt();
    		
    		pos = pos + rot % 26;
    		
    		System.out.println(array[pos]);
    il problema che nella stampa va in Exception Java.lang.ArrayIndexOutOfBoundsException perchè l'array è piccolo, ma lo fa solamente se per esempio:

    il carattere è 'u' e voglio una rotazione di 6

    però se parto dal carattere 'a' con una rotazione di 30 non mi da nessun problema

    cm posso fare???

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    755
    non so se ho capito bene il tuo problema,ma dopo aver fatto come ti ha giustamente suggerito Andrea1979:
    codice:
    pos = pos + rot % 26;
    ora aggiungi:
    codice:
    pos%=26;
    che,per puntualizzare,equivale a scrivere pos=pos%26;

    ciao!

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    108
    ok funziona grazie mille

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    108
    scusate l'ultima cosa...
    codice:
    while(rot>0){
    	pos = pos + rot % 26;
    	pos%=26;
    	System.out.println("Carattere con rotazione : " + array[pos]);
    	System.out.print("Rotazione --> ");
    	rot = in.nextInt();
    	pos = 0;
    }
    facendo così alla seconda richiesta di rotazione incomincia da capo

    esempio:
    carattere = 'x'
    rotazione = 1
    carattere con rotazione = y
    rotazione = 2
    carattere con rotazione = c

    perchè mi stampa c e non z ????

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    108
    Mancava questa parte di codice
    codice:
    for(int i=0;i<26;i++){
         if(array[i] == d)
    	pos = i;	
    }

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.