Sprawdź się
Zadanie 3
Plik liczby.txt zawiera 50 par liczb całkowitych z przedziału <168; 903921> oddzielonych pojedynczym znakiem odstępu, każda para zapisana jest w osobnym wierszu.
Przycisk do pobrania pliku TXT z treścią zadania. Pobierz załącznik
Jedno słowo jest anagramem drugiego, gdy składa się z takiej samej liczby identycznych znaków (anagramami są np. ciągi „ALE” i „ELA” albo „645” i „465”).
Napisz program, który dla danych z pliku liczby.txt sprawdzi, które pary liczb w poszczególnych wierszach są anagramami, a następnie zapisze te pary liczb w postaci dwójkowej do pliku anagramy.txt.
Do oceny oddajesz:
plik
anagramy.txtzawierający odpowiedź (pary liczb z plikuliczby.txtbędące anagramami, zapisane w postaci binarnej),plik(i) z komputerową realizacją zadania (kodem źródłowym programu).
W rozwiązaniu zadania wykorzystano tablicę dwuwymiarową. Tablica dwuwymiarowa składa się z n wierszy i dwóch kolumn. W przypadku testowanych danych n wynosi 5. Dla danych z pliku należy przyjąć n = 50.
JĘZYK C++
#include <iostream>
#include <string>
using namespace std;
string dec_do_bin(int liczba) {
string postac_bin = "";
while (liczba) {
postac_bin = to_string(liczba % 2) + postac_bin;
liczba /= 2;
}
return postac_bin;
}
int main() {
int n = 5;
int liczby[n][2] = {
{123,321},
{234,233},
{125,521},
{475,754},
{892,92}};
bool do_wypisania[n];
for (int i = 0; i < n; i++) {
int pierwsza = liczby[i][0];
int druga = liczby[i][1];
int cyfry[10] = {0};
while (pierwsza > 0) {
cyfry[pierwsza % 10]++;
pierwsza /= 10;
}
while (druga > 0) {
cyfry[druga % 10]--;
druga /= 10;
}
bool anagram = true;
for (int j = 0; j < 10; j++) {
if (cyfry[j] != 0)
anagram = false;
}
do_wypisania[i] = anagram;
}
for (int i = 0; i < n; i++) {
if (do_wypisania[i]) {
cout << dec_do_bin(liczby[i][0]) << " " << dec_do_bin(liczby[i][1]) << endl;
}
}
}JĘZYK JAVA
public class Main {
public static String dec_do_bin(int liczba) {
String postac_bin = "";
while (liczba > 0) {
postac_bin = (liczba % 2) + postac_bin;
liczba /= 2;
}
return postac_bin;
}
public static void main(String[] args) {
int[][] liczby = {
{123,321},
{234,233},
{125,521},
{475,754},
{892,92}};
int n = 5;
boolean[] do_wypisania = new boolean[n];
for (int i = 0; i < liczby.length; i++) {
int pierwsza = liczby[i][0];
int druga = liczby[i][1];
int[] cyfry = new int[10];
while (pierwsza > 0) {
cyfry[pierwsza % 10]++;
pierwsza /= 10;
}
while (druga > 0) {
cyfry[druga % 10]--;
druga /= 10;
}
boolean anagram = true;
for (int j = 0; j < 10; j++) {
if (cyfry[j] != 0) {
anagram = false;
break;
}
}
do_wypisania[i] = anagram;
}
for (int i = 0; i < liczby.length; i++) {
if (do_wypisania[i]) {
System.out.println(dec_do_bin(liczby[i][0]) + " " + dec_do_bin(liczby[i][1]));
}
}
}
}JĘZYK PYTHON
def dec_do_bin(liczba):
i = 0
postac_bin = ""
while liczba > 0:
postac_bin = str(liczba % 2) + postac_bin
liczba = int(liczba / 2)
return postac_bin
liczby = [
[123, 321],
[234, 233],
[125, 521],
[475, 754],
[892, 92]]
for i in range(len(liczby)):
pierwsza = liczby[i][0]
druga = liczby[i][1]
cyfry = [0 for _ in range(10)]
while pierwsza > 0:
cyfry[pierwsza % 10] += 1
pierwsza //= 10
while druga > 0:
cyfry[druga % 10] -= 1
druga //= 10
anagram = True
for j in range(10):
if cyfry[j] != 0:
anagram = False
break
if anagram:
pierwsza = dec_do_bin(liczby[i][0])
druga = dec_do_bin(liczby[i][1])
print(pierwsza, druga, sep=" ")Odpowiedź do zadania
anagramy.txt
Przycisk do pobrania pliku TXT z wynikiem zadania. Pobierz załącznik
Zadanie 4
Ciąg Fibonacciego definiujemy następująco: pierwszy wyraz tego ciągu wynosi 0, kolejny 1, każdy następny jest sumą dwóch poprzednich.
W pliku liczba.txt znajduje się jedna liczba naturalna.
Przycisk do pobrania pliku TXT z treścią zadania. Pobierz załącznik
Napisz program, który dla liczby n z pliku liczba.txt poda n wyrazów ciągu Fibonacciego. Zapisz je, każdy kolejny element w systemie binarnym w osobnym wierszu do pliku fibonacci.txt. Liczba n należy do przedziału <1, 47>.
Dla n = 5 plik fibonacci.txt powinien wyglądać następująco:
0
1
1
10
11Do oceny oddajesz:
plik
fibonacci.txtzawierający odpowiedź (kolejne wyrazy ciągu Fibonacciego zapisane binarnie, każdy w osobnym wierszu),plik(i) z komputerową realizacją zadania (kodem źródłowym programu).
JĘZYK C++
#include <iostream>
using namespace std;
void dec_do_bin(int liczba) {
string postac_bin = "";
while (liczba) {
postac_bin = to_string(liczba % 2) + postac_bin;
liczba /= 2;
}
cout << postac_bin << endl;
}
int main() {
int n = 34;
int F[n];
F[0] = 0;
F[1] = 1;
cout << F[0] << endl;
cout << F[1] << endl;
for (int i = 2; i < n; i++) {
F[i] = F[i - 1] + F[i - 2];
dec_do_bin(F[i]);
}
}JĘZYK JAVA
public class Main {
public static void dec_do_bin(int liczba) {
String postac_bin = "";
while (liczba > 0) {
postac_bin = (liczba % 2) + postac_bin;
liczba /= 2;
}
System.out.println(postac_bin);
}
public static void main(String[] args) {
int n = 34;
int F[] = new int[n];
F[0] = 0;
F[1] = 1;
System.out.println(F[0]);
System.out.println(F[1]);
for (int i = 2; i < n; i++) {
F[i] = F[i - 1] + F[i - 2];
dec_do_bin(F[i]);
}
}
}JĘZYK PYTHON
n = 34
fib = [0] * 100
fib[0] = 0
fib[1] = 1
print(fib[0], fib[1], sep="\n")
for i in range(2, n):
fib[i] = fib[i - 1] + fib[i - 2]
liczba = fib[i]
postac_bin = ""
while liczba > 0:
postac_bin = str(liczba % 2) + postac_bin
liczba = int(liczba / 2)
print(postac_bin)Odpowiedź do zadania
fibonacci.txt
Przycisk do pobrania pliku TXT z wynikiem zadania. Pobierz załącznik