Informacinių technologijų egzamino užduotis rasite Nacionalinės švietimo agentūros interneto svetainėje.
Jas sprendžia papildomo ugdymo akademijos „Alfa klasė" mokytojas Jurgis Benys.
Atsakymai:
1 programavimo užduotis
struct mokinys{ // Struktūra skirta duomenims apie kiekvieną mokinį saugoti (jo nurodyta klasės kategorija bei visas nueitas atstumas centimetrais)
int kl;
long int ats = 0;
};
struct atsakymai{ //Struktūra galutiniams duomenims saugoti
int klase;
int kiek = 0;
long double atstumas;
};
void skaitymas(int &m, mokinys M[]); //Funkcija skirta duomenų iš failo nuskaitymui
void skaiciavimas (int m, mokinys M[], int &a, atsakymai A[]);//Funkcija, kurioje apskaičiuojamas kiekvienos klasės kategorijos mokinių skaičius ir nueitas atstumas
void isvedimas (int a, atsakymai A[]); //Funkcija išvedanti duomenis į failą
int main(){
int m, a = 0;
mokinys M[50];
atsakymai A[12];
skaitymas(m, M);
skaiciavimas (m, M, a, A);
isvedimas (a, A);
return 0;
}
void skaitymas(int &m, mokinys M[]){
ifstream fd("U1.txt");
bool t;
int ilgis, zingsniai;
fd >> m;
for (int i = 0; i < m; i++){
t = false;
fd >> M[i].kl >> ilgis;
for (int j = 0; j < 7; j++){
fd >> zingsniai;
if(zingsniai != 0){ //Tikrinama ar kiekvienas įvestas skaičius yra ne nulis
M[i].ats += zingsniai * ilgis;
}
else{ //Jeigu įvedamas nulis, išsaugoma atmintyje
t = true;
}
}
if (t == true){ //Mokiniai, kurie kažkurią dieną įvedė nulį priskiriami klasei nulis
M[i].kl = 0;
}
}
fd.close();
}
void skaiciavimas (int m, mokinys M[], int &a, atsakymai A[]){
bool t;
for(int i = 0; i < m; i++){ //Ciklų tikslas atrinkti unikalias klases ir jų mokinių kiekį bei atstumą
t = false;
for(int j = 0; j < a; j++){
if (M[i].kl == A[j].klase && M[i].kl != 0){
A[j].kiek++;
A[j].atstumas += M[i].ats * 1.0 / 100000;
t = true;
}
}
if (t == false && M[i].kl != 0){
A[a].klase = M[i].kl;
A[a].kiek++;
A[a].atstumas = M[i].ats * 1.0 / 100000;
a++;
}
}
}
void isvedimas (int a, atsakymai A[]){
ofstream fr("U1rez.txt");
for (int i = 0; i < a; i++){
fr << fixed << setprecision(2) << A[i].klase << " " << A[i].kiek << " " << A[i].atstumas << endl;
}
fr.close();
}
2 programavimo užduotis
#include
#include
#include
using namespace std;
struct slaptazodis{ //Struktūra pradiniams duomenims ičsaugoti ir galutiniams atsakymų sąrašams sudaryti
string slapt;
int a, b, c, d, e;
string vert;
int mini = 50;
int kiek = 0;
string K[25];
int Ilgis[25];
};
void skaitymas (int &n, int &s, slaptazodis N[], slaptazodis S[]); //Funkcija, nuskaitanti duomenis iš failo
void skaiciavimas (int n, int s, slaptazodis N[], slaptazodis S[]); //Funkcija, apskaičiuojanti mažiausią naudotojo ir Vaidos slaptažodžio panašumą
void sarasas (int n, int s, slaptazodis N[], slaptazodis S[]); //Funkcija, atrenkanti kiekvienam vartotojo slaptažodžiui Vaidos slaptažodžius su mažiausiu panašumu
void rikiavimas(int n, slaptazodis N[]); //Funkcija, surikiuojanti kiekvieno naudotojo slaptažodžio panašių Vaidos slaptažodžių sąrašą
void isvedimas (int n, slaptazodis N[]); // Funkcija, išvedanti atsakymus į failą
int main(){
int n, s;
slaptazodis N[5], S[25];
skaitymas(n, s, N, S);
skaiciavimas(n, s, N, S);
sarasas(n, s, N, S);
rikiavimas(n, N);
isvedimas(n, N);
return 0;
}
void skaitymas (int &n, int &s, slaptazodis N[], slaptazodis S[]){
char eil1[16], eil2[10];
ifstream fd("U2.txt");
fd >> n >> s;
for (int i = 0; i < n; i++){
fd.ignore();
fd.get(eil1, 16);
N[i].slapt = eil1;
fd >> N[i].a >> N[i].b >> N[i].c >> N[i].d >> N[i].e;
}
for (int i = 0; i < s; i++){
fd.ignore();
fd.get(eil1, 16);
S[i].slapt = eil1;
fd >> S[i].a >> S[i].b >> S[i].c >> S[i].d >> S[i].e;
fd.ignore();
fd.get(eil2, 10);
S[i].vert = eil2;
}
fd.close();
}
void skaiciavimas (int n, int s, slaptazodis N[], slaptazodis S[]){
int temp;
for (int i = 0; i < n; i++){
for (int j = 0; j < s; j++){
temp = abs(N[i].a-S[j].a) + abs(N[i].b-S[j].b) + abs(N[i].c-S[j].c) + abs(N[i].d-S[j].d) + abs(N[i].e-S[j].e); //Panašumo reikšmės skaičiavimas
if (temp < N[i].mini){
N[i].mini = temp;
N[i].vert = S[j].vert;
}
}
}
}
void sarasas (int n, int s, slaptazodis N[], slaptazodis S[]){
int temp;
for (int i = 0; i < n; i++){
for (int j = 0; j < s; j++){
temp = abs(N[i].a-S[j].a) + abs(N[i].b-S[j].b) + abs(N[i].c-S[j].c) + abs(N[i].d-S[j].d) + abs(N[i].e-S[j].e); //Panašumo reikšmės skaičiavimas
if (temp == N[i].mini){ // Jei randamas slaptažodis su tokiu pat panašumu kaip mažiausia reikšmė, šis slaptažodis ir jo ilgis pridedami į sąrašą struktūroje
N[i].K[N[i].kiek] = S[j].slapt;
N[i].Ilgis[N[i].kiek] = S[j].a;
N[i].kiek++;
}
}
}
}
void rikiavimas(int n, slaptazodis N[]){
for(int i = 0; i < n; i++){
for (int j = 0; j < N[i].kiek-1; j++){
for (int l = j+1; l < N[i].kiek; l++){
if(N[i].Ilgis[j] < N[i].Ilgis[l]){
swap(N[i].Ilgis[j], N[i].Ilgis[l]);
swap(N[i].K[j], N[i].K[l]);
}
}
}
}
}
void isvedimas (int n, slaptazodis N[]){
ofstream fr("U2rez.txt");
for (int i = 0; i < n; i++){
fr << N[i].slapt << " " << N[i].vert << " " << N[i].mini << endl;
for (int j = 0; j < N[i].kiek; j++){
fr << N[i].K[j] << endl;
}
}
fr.close();
}
---