Java , enigma , problem ze zwrotem kodu po odbiciu
Ostatnio zmodyfikowano 2015-01-26 14:43
bartal0meo Temat założony przez niniejszego użytkownika |
Java , enigma , problem ze zwrotem kodu po odbiciu » 2015-01-26 14:43:22 Witam , Piszę od dłuższego czasu program-enigmę (ok. 3tyg) ale niestety ciągle mam problem z odbiciem zwracanego kodu (nie odbija kodu tak jak powinno ) Proszę o pomoc w znalezieniu błędu jeśli ktoś zauważy gdzie mam błąd. W linku poniżej podaję zasadę działania enigmy http://edu.i-lo.tarnow.pl/inf/hist/006_col/0001.php KOD: package javaapplication19;
import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.io.PrintWriter; import java.util.Arrays; import java.util.Scanner; public class JavaApplication19 { public static void main( String[] args ) throws FileNotFoundException, IOException { Scanner input = new Scanner( System.in ); Scanner in = new Scanner( System.in ); int z = 0; String[] imie = new String[ 10 ]; char szyfr = 0; PrintWriter w = new PrintWriter( "plik.txt" ); PrintWriter d = new PrintWriter( "szyfrowani.txt" ); FileReader fr = null; FileReader bz = null; FileReader ro = null; FileReader ref = null; String reflektor = null; String re; ref = new FileReader( "reflektor.txt" ); BufferedReader refe = new BufferedReader( ref ); while(( re = refe.readLine() ) != null ) { reflektor = re; } char[] Tablica = new char[ 26 ]; int k = 0; int i = 0; while( k != 26 ) { Tablica[ k ] =( char )(( char ) '\u0061' + k ); k++; } System.out.print( "Czy chcesz wygenerować nowe rotory: " ); System.out.print( "podaj ilość rotorow: " ); int r = input.nextInt(); int[] lrotorow = new int[ r ]; char[] rotory = new char[ 255 ]; String[] TablicaRotorow = new String[ r ]; ro = new FileReader( "rotory.txt" ); BufferedReader bro = new BufferedReader( ro ); String wiersz; i = 0; while(( wiersz = bro.readLine() ) != null ) { TablicaRotorow[ i ] = wiersz; i++; } for( i = 0; i <= r - 1; i++ ) { System.out.print( "podaj przesunięcie " +( i + 1 ) + " rotora: " ); lrotorow[ i ] = input.nextInt(); } int rot[] = Arrays.copyOf( lrotorow, lrotorow.length ); fr = new FileReader( "C:\\k.txt" ); BufferedReader bfr = new BufferedReader( fr ); String Linia; char linia; char pom; int f = 0; for( i = 0; i <= 2; i++ ) System.out.println( TablicaRotorow[ i ] ); while(( Linia = bfr.readLine() ) != null ) { int dlugosc = Linia.length(); for( i = 0; i < dlugosc; i++ ) { linia = Linia.charAt( i ); int s; for( s = 0; s <= lrotorow.length - 1; s++ ) { int j = 0; do { pom = 0; if(( Tablica[ j ] == linia ) && s == 0 ) { pom = linia; z = rot[ s ] + j + 1; szyfr = TablicaRotorow[ s ].charAt( z ); } else if( linia == '\u0020' ) { szyfr = '\u0020'; } else if( szyfr == Tablica[ j ] && s != 0 ) { pom = szyfr; z = rot[ s ]; z += j; if(( z > 26 ) && s != rot.length - 1 ) { z %= 26; rot[ s + 1 ] += 1; rot[ s ] = lrotorow[ s ]; } if( s == rot.length - 1 ) { rot[ s ] += 1; z += 1; if( z >= 26 ) z %= 26; } szyfr = TablicaRotorow[ s ].charAt( z ); } j++; } while( pom != Tablica[ j - 1 ] ); } for( int j = 0; j < 26; j++ ) { if( szyfr == Tablica[ j ] ) szyfr = reflektor.charAt( j ); } w.print( szyfr ); System.out.print( szyfr ); } System.out.println(); } w.close(); rot = Arrays.copyOf( lrotorow, lrotorow.length ); bz = new FileReader( "plik.txt" ); BufferedReader bfbz = new BufferedReader( bz ); szyfr = 0; i = 0; int dupa; boolean warunek; while(( Linia = bfbz.readLine() ) != null ) { int dlugosc = Linia.length(); for( i = 0; i < dlugosc; i++ ) { linia = Linia.charAt( i ); System.out.println( Linia ); int s; for( s = lrotorow.length - 1; s >= 0; s-- ) { int j = 0; warunek = false; do { pom = 0; if(( TablicaRotorow[ s ].charAt( j ) == linia ) && s == rot.length - 1 ) { z = rot[ s ]; z = j - z - 1; szyfr = Tablica[ z ]; if( z <= 0 ) { z = z + 26; rot[ s ] = lrotorow[ s ]; } warunek = true; } else if( linia == '\u0020' ) { szyfr = '\u0020'; warunek = true; } else if(( szyfr == TablicaRotorow[ s ].charAt( j ) ) && s != rot.length - 1 ) { z = rot[ s ]; z = j - z; if( z <= 0 ) { z = z + 26; rot[ s + 1 ] -= 1; rot[ s ] = lrotorow[ s ]; } if( s == 0 ) z -= 1; szyfr = Tablica[ z ]; warunek = true; } pom = szyfr; dupa = j; j++; } while( warunek != true ); } System.out.print( szyfr ); } } } }
|
|
« 1 » |