Responsive image Boda Szilárd weblapja

Laborfeladat:

1. Adott egy input.txt  file, amely első sorában egy szám van, N. Az alatta levő N sorban szavak vannak, minden sorban N szó, " " el elválasztva egymástól.
Írjunk egy C++ programot, amely a főátló feletti szavak első két betűjét alakítja nagybetűvé, illetve a főátló alatti szavak utolsó két betűjét,
majd az így kapott eredményt egy output.txt file ba írja.


input.txt
  • N=3
  • alma korte barack
  • szilva meggy malna
  • cseresznye dio birs



output.txt
  • alma KOrte BArack
  • szilVA meggy MAlna
  • cseresznYE dIO birs




2. Adott egy input.txt file amelyben telefonszámok vannak. Kétféle telefonszám van,

Sajnos aki a telefonszámokat gépelte be, elfelejtette vezetékes számok esetén a 0040260 at elétenni (feltételezzük, hogy mind Szilágy megyei számok)
illetve a mobil számoknál a 00407 et.
Írjunk egy C++ programot, amely ezt megteszi már a memóriában, s az így generált listát egy output.txt fileba menti le! (Figyelem, nem elég csak a fileba kiírni!)


input.txt
  • 611655
  • 4221449
  • 2134567
  • 7766331



output.txt
  • 0040260611655
  • 004074221449
  • 004072134567
  • 004077766331

3. Egy legalább három betűből álló szó balra elforgatásának nevezzük azt a műveletet, amely által az első betű a szó végére kerűl, és az összes többi betű egy pozícióval balra tolódik. Példa: az ilumina szó balra elforgatása az luminai szót eredményezi. Egy legtöbb 100 karaktert tartalmazó szövegben, amelyben a szavak az angol abc kisbetűiből állnak, a szavak egy-egy szóközzel vannak elválasztva egymástól.
Írjon C/C++ programot, amely beolvas a billentyűzetről egy fent megadott típusú szöveget, és módosítja a memóriában a legalább három betűből álló szavak balra elforgatásával, ahogy a példa mutatja. A program kiírja a képernyőre a kapott szöveget vagy a nu exista üzenetet, ha a szövegben nincs egyetlen három betűből álló szó sem.

Bemenet
  • un palc mic de scolarite ilumina sala



Kimenet
  • un alcp icm de colarites luminai alas


Forrás: Érettségi, 2020 III/2
4. Két különböző szót tükörben (în oglindă) nevezünk, ha mindegyiket a másik betűinek jobbról balra történő olvasásával kapunk. Példa: animate és etamina tükörben vannak, viszont a reper szónak nincs megfelelő tükör
( Megjegyzés: szerintem sem helyes így, de így fordították az érettségiben ). Adott egy legtöbb 100 karakterből álló szöveg, melyben a szavak az angol ábécé kicsi betűiből állnak és egy-egy szóközzel vannak elválasztva egymástól. Írjon olyan C/C++ programot, amely beolvas a billentyűzetről egy fenti típusú szöveget és átalakítja a memóriában, kicserélve minden páratlan karakterszámú szót arra a szóra, mellyel ő tükörben van, ha ez létezik, ahogy a példa mutatja. A program kiírja a képernyőre a kapott szöveget, vagy a nu exista üzenetet, ha a szövegben egy szó sem cserélődött ki.

Bemenet
  • era o selectie reper de desene animate prezenta



Kimenet
  • are o selectie reper de desene etamina prezenta


Bemenet
  • un reper pentru desene



Kimenet
  • nu exista

Forrás: Pótérettségi, 2020 III/2

Házi feladat:
A 2. feladatot módosítsuk úgy, hogy ne egy output.txt be kerüljenek a telefonszámok, hanem attól függően, hogy vezetékes, Digis, vagy stb, külön külön fileokba.
Vagyis a vezetékesek egy "vezetekes.txt" fileba, a Digisek egy "digi.txt" fileba, az orangeosok egy "orange.txt" fileba, s a vodafone osok egy "vodafone.txt" fileba.



input.txt
  • 611655
  • 4221449
  • 2134567
  • 7766331



vezetekes.txt
  • 0040260611655
orange.txt
  • 004074221449
vodafone.txt
  • 004072134567
digi.txt
  • 004077766331

Beküldési határidő
2019 október 28, 23:59, az ezután küldött házik 4 esek lesznek, ha tökéletesek, 1 ha nem.
A házi elnevezése: H04_Pelda_Bela.cpp, Pelda Bela helyett az aktuális vezeték és keresztnévvel.
Ne legyenek benne ékezetek, üres helyek, vagy egyéb írásjelek, stb.!
Azoknál a háziknál, amelyek kísértetiesen hasonlítanak (másolás, ugyanonnan inspirálódtak, stb,)
mindkettőnek 1 es jár.
Így kell átnevezni



Megoldott feladatok:
1. Hozzunk létre egy NxN es mátrixot stringekből, s töltsük fel véletlenszerűen. A főátlón levő elemeket tegyük egyenlővé 0 val, a főátló fölött levő elemek első betűjét változtassuk át nagybetűvé, az összes többi legyen kisbetű, a főátló alatt levőknek pedig csak az utolsó betűje legyen nagybetű. A végső mátrixot írjuk ki a képernyőre!


Bemenet
  • N=3



Kimenet
  • 0 Str Qwerty
  • asD 0 Asd
  • zxC cvB 0


#include <iostream>
#include <fstream>
#include <string>
#include <stdlib.h>

using namespace std;

int main()

{

    //szukseges valtozok deklaralasa

    int k,i,j,y,n;

    string a[100][100];

    //rand fuddveny inicializalasa

    srand(0);

    cout<<"n=";

    //n beolvasasa

    cin>>n;



    //vegigmegyunk a matrixon

    for(i=0; i<n; i++)

    {

        for(j=0; j<n; j++)

        {
//kezdetben ures stringek lesznek az elemek
a[i][j]="";
//a hosszokat is veletlenszeruen valasszuk 3 es 8 kozott
int hossz = 3+rand()%5;       
//annyiszor generalunk egy veletlenszamot 97 es 122 kozott, amennyi a hossz

           for(y=0; y<hossz; y++){
              
//veletlenszam generalasa 97 es 122 kozott
k=97+rand()%26;
               
//hozzaadjuk az a[i][j] hez az uj erteket, ez mindig egy kisbetu lesz a-z kozott (lasd ASCII kodok)
a[i][j]+=k;

            }
        }

    }

    for(i=0; i<n; i++)

        for(j=0; j<n; j++){

string elem = a[i][j];

           //kiszamoljuk a tomb utolso elemet

            int hossz = elem.length()-1;

//a foatlon levo elemek 0 k lesznek   
if(i==j){
            
a[i][j]="0";

            }

            //a folotte levoek elso betuje nagybetu lesz

           if(i<j){
              
a[i][j][0]=toupper(a[i][j][0]);

            }

       //az alatta levok utolso betuje lesz nagybetu
if(i>j){
              
a[i][j][hossz]=toupper(a[i][j][hossz]);
}

        }

    //kiiras

    for(i=0; i<n; i++){

        for(j=0; j<n; j++){
cout<<a[i][j] << " ";

}
        cout<<endl;
    }

    return 0;

}

2. Olvassunk be egy "input.txt" fileból egy NxM es mátrixot, s írjuk ki egy "output.txt" fileba egy másik mátrixot, ami 0 és 1 esekből áll, a következő logika alapján. Ha a mátrix i, j eleme tartalmazza az "as" stringet, akkor 1 et, ha nem, 0 t.


input.txt
  • qwe rty asd
  • sd gfj ghj
  • asf ash vnn



output.txt
  • 0 0 1
  • 0 0 0
  • 1 1 0



#include <iostream>

#include <fstream>

#include <sstream>



using namespace std;



int main()

{

    //a szukseges valtozok deklaralasa

    int i=0, j=0, n, m;

    int b[10][10];

    string a[10][10];

    //input file deklaralasa

    fstream infile("input.txt");

    string line, token;

    //ha sikerult megnyitni a filet, olvasd be a matrixot

    if(infile.is_open()){

        //amig vannak sorok, olvasd be

        while(getline(infile,line)){
           
//darabold fel a sort        
istringstream iss(line);

            j=0;

           
//egyenkent olvasd be az elemeket

           
while(iss>>token){

               
a[i][j]=token;
j++;
            }
            i++;

        }

    }

    //lementjuk az n es m erteket i es j bol

    n=i;

    m=j;

    string keresd;

    //beolvassuk a stringet amit keresni fogunk

    cout<<"mit keresunk:";

    cin>>keresd;

    for(i=0; i<n; i++)

    {

        for(j=0; j<m; j++){
//ha a string megvan a tombben, akkor irj 1 t, ha nem, akkor 0 t   
size_t talalat=a[i][j].find(keresd);

           if(talalat!=string::npos)

           b[i][j]=1;

            else
b[i][j]=0;

        }

    }

    //output file letrehozasa

    ofstream output("output.txt");

    //kiiras az output fileba

    for(i=0; i<n; i++){

        for(j=0; j<m; j++)

output<<b[i][j]<<" ";

        output<<endl;

    }


    return 0;

}