Sprawdź się
Zadanie 3
Pewien bank w Bajtolandii poinformował swoich klientów, że aby zadbać o bezpieczeństwo transakcji, wszystkie numery kont zostaną zmienione na takie, które będą palindromicznymi (czyli takimi, które nie zmieniają się, jeśli ich znaki zapisze się w odwrotnej kolejności) łańcuchami znaków składającymi się tylko z cyfr, w tym z co najmniej czterech cyfr 0 oraz większej liczby innych niż 0 cyfr nieparzystych niż parzystych. By zmienić numer konta, klient powinien zgłosić się do banku z odpowiednim wnioskiem.
Po miesiącu sprawdzono, czy wszyscy klienci zgłosili się do banku z wnioskiem o zmianę numeru konta.
Dany jest plik konta.txt zawierający 100 numerów kont zapisanych w osobnych wierszach. Każdy numer konta jest łańcuchem znaków składającym się z 26 cyfr.
Przycisk do pobrania pliku TXT z treścią zadania. Pobierz załącznik
Napisz program, który sprawdzi, ilu klientów banku zmieniło numer konta. Wynik zapisz do pliku konta2.txt.
Do oceny oddajesz:
plik
konta2.txtzawierający odpowiedź (liczbę naturalną),plik(i) z komputerową realizacją zadania (kodem programu).
JĘZYK C++
#include <iostream>
#include <string>
using namespace std;
bool czyPalindrom(string slowo) {
int dlugosc = slowo.length();
for (int i = 0; i < dlugosc / 2; i++) {
if (slowo[i] != slowo[dlugosc - i - 1]) {
return false;
}
}
return true;
}
bool czyWarunekSpelniony(string slowo) {
int licznikZer = 0;
int licznikNieparzystych = 0;
int licznikParzystych = 0;
int dlugosc = slowo.length();
for (int i = 0; i < dlugosc; i++) {
if (slowo[i] == '0') {
licznikZer++;
} else if ((slowo[i] - '0') % 2 == 1) {
licznikNieparzystych++;
} else {
licznikParzystych++;
}
}
return licznikZer >= 4 && licznikNieparzystych > licznikParzystych;
}
int main() {
string konta[] = {"26796903336607674615301944", "03595006960522506960059530", "79258581230396188415221490",
"60513937002655620073931506", "36189450298144189205498163", "75748440131312739038846512",
"81323388028161946209414072", "86439343775983904857819464", "75031507854105614512315347",
"41936647289395006143793018"};
int licznik = 0;
int rozmiar = sizeof(konta)/sizeof(konta[0]);
for (int i = 0; i < rozmiar; i++) {
string konto = konta[i];
if (czyPalindrom(konto) && czyWarunekSpelniony(konto)) {
licznik++;
}
}
cout << licznik;
return 0;
}JĘZYK JAVA
public class Main {
public static void main(String[] args) {
String[] konta = {"26796903336607674615301944", "03595006960522506960059530", "79258581230396188415221490",
"60513937002655620073931506", "36189450298144189205498163", "75748440131312739038846512",
"81323388028161946209414072", "86439343775983904857819464", "75031507854105614512315347",
"41936647289395006143793018"};
int licznik = 0;
for (int j = 0; j < konta.length; j++) {
String konto = konta[j];
if (czyPalindrom(konto) && czyWarunekSpelniony(konto)) {
licznik += 1;
}
}
System.out.println(licznik);
}
public static boolean czyPalindrom(String slowo) {
int dlugosc = slowo.length();
for (int i = 0; i < dlugosc / 2; i++) {
if (slowo.charAt(i) != slowo.charAt(dlugosc - i - 1)) {
return false;
}
}
return true;
}
public static boolean czyWarunekSpelniony(String slowo) {
int licznikZer = 0;
int licznikNieparzystych = 0;
int licznikParzystych = 0;
for (int i = 0; i < slowo.length(); i++) {
char l = slowo.charAt(i);
if (l == '0') {
licznikZer += 1;
} else if (Character.getNumericValue(l) % 2 == 1) {
licznikNieparzystych += 1;
} else {
licznikParzystych += 1;
}
}
return licznikZer >= 4 && licznikNieparzystych > licznikParzystych;
}
}JĘZYK PYTHON
konta = ['26796903336607674615301944', '03595006960522506960059530', '79258581230396188415221490',
'60513937002655620073931506', '36189450298144189205498163', '75748440131312739038846512',
'81323388028161946209414072', '86439343775983904857819464', '75031507854105614512315347',
'41936647289395006143793018']
def czy_palindrom(slowo):
dlugosc = len(slowo)
for i in range(dlugosc // 2):
if slowo[i] != slowo[dlugosc - i - 1]:
return False
return True
def czy_warunek_spelniony(slowo):
licznik_zer = 0
licznik_nieparzystych = 0
licznik_parzystych = 0
for l in slowo:
if l == '0':
licznik_zer += 1
elif int(l) % 2 == 1:
licznik_nieparzystych += 1
else:
licznik_parzystych += 1
return licznik_zer >= 4 and licznik_nieparzystych > licznik_parzystych
licznik = 0
for konto in konta:
if czy_palindrom(konto) and czy_warunek_spelniony(konto):
licznik += 1
print(licznik)Odpowiedź do zadania
Odpowiedź do zadania znajduje się w pliku konta2.txt.
Przycisk do pobrania pliku TXT z odpowiedzią do zadania. Pobierz załącznik