[JAVA] Czy liczba ułożona jest w kolejności rosnącej - Matura Maj 2012 Podstawowa
Ostatnio zmodyfikowano 2013-01-09 16:44
krzysiekkcn Temat założony przez niniejszego użytkownika |
[JAVA] Czy liczba ułożona jest w kolejności rosnącej - Matura Maj 2012 Podstawowa » 2013-01-09 00:00:24 Witam, staram się uporać z maturą z informatyki maj 2012. Zadanie jest następujące: Zadanie 4. Cyfry (10 pkt) W kolejnych wierszach pliku cyfry.txt znajduje się1000 liczb naturalnych, mniejszych niż 10^9 (jeden miliard), po jednej liczbie w każdym wierszu. Napisz program, który da odpowiedzi do poniższych podpunktów. Każdą odpowiedź zapisz w pliku zadanie4.txt, poprzedzając ją oznaczeniem odpowiedniego podpunktu.
a) Ile liczb parzystych jest w pliku cyfry.txt?
b) Podaj liczbę z pliku cyfry.txt, której suma cyfr jest największa oraz liczbę z tego pliku, której suma cyfr jest najmniejsza. W obu przypadkach jest tylko jedna taka liczba.
Przykład: Dla danego zbioru liczb: 121324 66562 675100 1187010
odpowiedzią są liczby: 66562 oraz 121324, ponieważ suma cyfr liczby 66562 jest równa 25 (6+6+5+6+2) i jest największą taką sumą, zaś suma cyfr liczby 121324 (1+2+1+3+2+4) jest równa 13 i jest najmniejszą taką sumą.
c) Wypisz wszystkie liczby z pliku cyfry.txt, których cyfry tworzą ciąg rosnący.
Przykład: Cyfry liczby 123579 tworzą ciąg rosnący, ponieważ1<2<3<5<7<9. Cyfry liczby 1232 nie tworzą ciągu rosnącego, ponieważ ostatnia cyfra (2) nie jest większa od przedostatniej (3). Cyfry liczby 34556 nie tworzą ciągu rosnącego, ponieważ cyfra trzecia (5) i cyfra czwarta (5) są sobie równe.
Napisałem program w którym dobrze rozwiązuje podpunkty A oraz B. Próbuje podejść do podpunktu C - niestety nie wiem jak. Dodałem tablicę liczby[numerliczby][znak] Np. mam liczbę: 1234 liczby[0][1]=4 liczby[0][2]=3 liczby[0][3]=2 liczby[0][4]=1 Proszę o pomoc oraz z góry pozdrawiam Krzysiek. Program: import java.io.File; import java.io.FileNotFoundException; import java.util.Scanner;
public class maturacyfry { public static void main( String[] args ) throws FileNotFoundException { File cyfry = new File( "cyfry.txt" ); Scanner in = new Scanner( cyfry ); int[] tab_cyfry = new int[ 1000 ]; String linia; int i = 0; while( in.hasNextLine() ) { linia = in.nextLine(); tab_cyfry[ i ] = Integer.parseInt( linia ); i++; } System.out.println( "--------------------------------A---------------------------------" ); int parzystych = 0; for( i = 0; i <= 999; i++ ) { if( tab_cyfry[ i ] % 2 == 0 ) { parzystych++; } } System.out.println( "Liczb parzystych jest " + parzystych ); System.out.println( "--------------------------------B---------------------------------" ); int[] d = new int[ 1000 ]; int digit; int[] tab_suma = new int[ 1000 ]; int suma = 0; for( i = 0; i < 999; i++ ) { d[ i ] = tab_cyfry[ i ]; while( d[ i ] > 0 ) { digit = d[ i ] % 10; d[ i ] = d[ i ] / 10; suma = suma + digit; } tab_suma[ i ] = suma; suma = 0; } int value; int j = 0; for( i = 1; i < 1000; ++i ) { value = tab_suma[ i ]; for( j = i - 1; j >= 0 && tab_suma[ j ] > value; --j ) { tab_suma[ j + 1 ] = tab_suma[ j ]; } tab_suma[ j + 1 ] = value; } int[] e = new int[ 1000 ]; int digit2; int suma2 = 0; int indeksmin = 0; int indeksmax = 0; for( i = 0; i < 999; i++ ) { e[ i ] = tab_cyfry[ i ]; while( e[ i ] > 0 ) { digit2 = e[ i ] % 10; e[ i ] = e[ i ] / 10; suma2 = suma2 + digit2; } if( suma2 == tab_suma[ 1 ] ) indeksmin = i; if( suma2 == tab_suma[ 999 ] ) indeksmax = i; suma2 = 0; } System.out.println( "Liczba o największej sumie cyfr to: " + tab_cyfry[ indeksmin ] ); System.out.println( "Liczba o najmniejszej sumie cyfr to: " + tab_cyfry[ indeksmax ] ); System.out.println( "--------------------------------C---------------------------------" ); int[] f = new int[ 1000 ]; int digit3; int[][] liczby = new int[ 1000 ][ 100 ]; int k = 0; for( i = 0; i < 1000; i++ ) { f[ i ] = tab_cyfry[ i ]; while( f[ i ] > 0 ) { digit3 = f[ i ] % 10; f[ i ] = f[ i ] / 10; liczby[ i ][ k ] = digit3; k++; } k = 0; } in.close(); } } Plik: http://wklejto.pl/144916Plik z cyframi na maturze[/a] |
|
DejaVu |
» 2013-01-09 00:06:34 W skrócie if( liczba.dlugosc() < 2 ) return true;
for( i = 1; i < liczba.dlugosc(); ++i ) if( liczba[ i - 1 ] >= liczba[ i ] ) return false;
return true;
|
|
krzysiekkcn Temat założony przez niniejszego użytkownika |
» 2013-01-09 16:44:29 Dzieki wielkie |
|
« 1 » |