Pereiti prie turinio

Neteistas

Nariai
  • Pranešimai

    13
  • Užsiregistravo

  • Lankėsi

  • Atsiliepimai

    0%

Neteistas Pranešimai

  1. Pirma užduotis nebuvo sunki... Nejuokaukit. Excel, word lengva. Teorija nežinau, visada kažkur susimaunu ant jos. O antros programavimo užduoties nespėjau padaryti. :(

    Jei tau taip lengva buvo, tai kodėl nespėjiai visko padaryt? :D

  2. rezultatai.txt

    Jonas 3

    Petras 1

    Vytas 1

     

    #include <iostream>
    #include <fstream>
    
    using namespace std;
    
    struct asmuo{
    string vardas;
    int amzius;
    int kiek;
    };
    //-----------------------------
    //Konstantos
    const char CDfv[] = "duomenys.txt";
    const char CRfv[] = "rezultatai.txt";
    const int Cmax = 100;
    //-----------------------------
    //Funkciju prototipai
    void skaityti(asmuo A[], int & n);
    void ieskoti(asmuo A[], int & n);
    int kiek(asmuo A[], int & n, int m, string pav);
    void salinti(asmuo A[], int & n, int index);
    void rikiuoti(asmuo A[], int n);
    void rodyti(asmuo A[], int n);
    //-----------------------------
    int main()
    {
       asmuo A[Cmax];
       int n;
       skaityti(A, n);
       ieskoti(A, n);
       rikiuoti(A, n);
       rodyti(A, n);
       return 0;
    }
    //-----------------------------------
    //Nuskaito duomenys
    void skaityti(asmuo A[], int & n)
    {
       ifstream fd(CDfv);
       fd>>n;
       fd.ignore(80, '\n');
       for(int i = 0; i<n; i++)
       {
           char eil[9];
           fd.get(eil, 9);
           A[i].vardas = eil;
           fd>>A[i].amzius;
           fd.ignore(80, '\n');
           A[i].kiek = 1;
       }
       fd.close();
    }
    //-----------------------------
    //Suranda kiek tokiu pat vardu
    void ieskoti(asmuo A[], int & n)
    {
       for(int i = 0; i<n; i++)
       {
           A[i].kiek += kiek(A, n, i, A[i].vardas);
       }
    }
    //-----------------------------------------------------
    //Jeigu suranda toki pat varda pasalina ji ir gražina skaičiu kuris nurodo kiek tokiu pat vardu
    int kiek(asmuo A[], int & n, int m, string pav)
    {
       int k = 0;
       for(int i = m+1; i<n; i++)
       {
           if(A[i].vardas==pav)
           {
               k++;
               salinti(A, n, i);
               i--;
           }
       }
       return k;
    }
    //-----------------------------------------------
    //Pasalina struktura elementa(Vienoda varda)
    void salinti(asmuo A[], int & n, int index)
    {
       for(int i = index; i<n; i++)
       {
           A[i] = A[i+1];
       }
       n--;
    }
    //-----------------------------------------
    //Surikiuoja didejanciai pagal kiek tokiu pat vardu. (Burbuliuko metodas)
    void rikiuoti(asmuo A[], int n)
    {
       for(int i = 0; i<n-1; i++)
           for(int j = i+1; j<n; j++)
       {
           if(A[i].kiek<A[j].kiek)
           {
               swap(A[i], A[j]);
           }
       }
    }
    //---------------------------------------
    //Isveda rezultatus i faila
    void rodyti(asmuo A[], int n)
    {
       ofstream fr(CRfv);
       for(int i = 0; i<n; i++)
       {
           fr<<A[i].vardas<<A[i].kiek<<endl;
       }
       fr.close();
    }
    

  3. C++ kodas gal prireiks :D

    #include <iostream>
    #include <fstream>
    
    using namespace std;
    struct miestas{
    string miest;
    string valst;
    int kiek;
    };
    //Konstantos
    //----------------------------------
    const char CDfv[] = "duomenys.txt";
    const char CRfv[] = "rezultatai.txt";
    const int Cmax = 104;
    //----------------------------------
    void skaityti(miestas A[], int & n);
    void ieskoti(miestas A[], int & n);
    int kiek(miestas A[], int & n, int m, string pav);
    void salinti(miestas A[], int & n, int index);
    void rikiuoti(miestas A[], int n);
    void rodyti(miestas A[], int n);
    //----------------------------------
    int main()
    {
       miestas A[Cmax];
       int n;          //Kiek dalyvauja apskričių
       skaityti(A, n);
       ieskoti(A, n);
       rikiuoti(A, n);
       rodyti(A, n);
       return 0;
    }
    //Nuskaito duomenys iš duomenys.txt
    void skaityti(miestas A[], int & n)
    {
       ifstream fd(CDfv);
       fd>>n;
       fd.ignore(80, '\n');
       for(int i = 0; i<n; i++)
       {
           char eil[15];
           fd.get(eil, 15);
           A[i].miest = eil;
           fd.get(eil, 13);
           A[i].valst = eil;
           fd>>A[i].kiek;
           fd.ignore(80, '\n');
       }
       fd.close();
    }
    //Apskaičiuoja kiek kiekvienoje apskrityje gyventojų.
    void ieskoti(miestas A[], int & n)
    {
       for(int i = 0; i<n; i++)
       {
           A[i].kiek += kiek(A, n, i, A[i].valst);
       }
    }
    //Suranda kiek tokiu pat apskričių jas pašalina ir gražina ta reikšme
    int kiek(miestas A[], int & n, int m, string pav)
    {
       int k;
       for(int i = m+1; i<n; i++)
       {
           if(A[i].valst==pav)
           {
               k += A[i].kiek;
               salinti(A, n, i);
           }
       }
       return k;
    }
    //Pašalina pasikartojančia apskritį 
    void salinti(miestas A[], int & n, int index)
    {
       for(int i = index; i<n; i++)
       {
           A[i] = A[i+1];
       }
       n--;
    }
    //Surikiuoja Burbuliuko metodo didėjančiai
    void rikiuoti(miestas A[], int n)
    {
       for(int i = 0; i<n-1; i++)
           for(int j = i+1; j<n; j++)
           if(A[i].kiek>A[j].kiek)
           swap(A[i], A[j]);
    }
    //Spausdina rezultatus i rezultatai.txt
    void rodyti(miestas A[], int n)
    {
       ofstream fr(CRfv);
       fr<<n<<endl;
       for(int i = 0; i<n; i++)
       {
           fr<<A[i].valst<<"  "<<A[i].kiek<<endl;
       }
       fr.close();
    }

  4. Iškilo klausimas kaip reikia komentuoti struktūra? :D

    Čia taip liepė informatikos mokytojas komentuoti, bet nesu tuo tikras

     

    #include <iostream>
    #include <fstream>
    #include <iomanip>
    
    using namespace std;
    //----------------------------------------
    struct grybai{
    int diena;          //Pirmasis struktūros elementas
    int baravykai;      //Antrasis struktūros elementas
    int raudonikiai;    //Trečiasis struktūros elementas
    int lepsiai;        //Ketvirtasis struktūros elementas
    int suma;           //Penktasis struktūros elementas
    };
    //----------------------------------------
    //Konstantos
    const char CDfv[] = "duomenys.txt";
    const char CRfv[] = "rezultatai.txt";
    const int Cmax = 100;
    //----------------------------------------
    //Proceduros ir funkcijos
    void skaityti(grybai A[], int & n);
    void ieskoti(grybai A[], int & n);
    void salinti(grybai A[], int n, int index);
    void rikiuoti(grybai A[], int n);
    void rodyti(grybai A[], int n);
    int didziausias(grybai A[], int n);
    //----------------------------------------
    int main()
    {
       grybai A[Cmax];
       int n;              //Kiek dienu grybavo
       skaityti(A, n);
       ieskoti(A, n);
       rikiuoti(A, n);
       rodyti(A, n);
       return 0;
    }
    //-----------------------------------------------
    //Atsidaro faila, paima duomenys, surašo į struktūra.
    void skaityti(grybai A[], int & n)
    {
       ifstream fd(CDfv);
       fd>>n;
       for(int i = 0; i<n; i++)
       {
           fd>>A[i].diena>>A[i].baravykai>>A[i].raudonikiai>>A[i].lepsiai;
       }
       fd.close();
    }
    //-----------------------------------------------
    //Ieško ar yra tokiu pačiu dienų jeigu randa grybus sudeda ir panaikina pakartotine diena
    void ieskoti(grybai A[], int & n)
    {
       int index = 0;
       for(int i = 0; i<n-1; i++)
           for(int j = i+1; j<n; j++)
       {
           if(A[i].diena==A[j].diena)
           {
               index = j;
               A[i].baravykai += A[j].baravykai;
               A[i].raudonikiai += A[j].raudonikiai;
               A[i].lepsiai += A[j].lepsiai;
               salinti(A, n, index);
               n--;
           }
           A[i].suma = A[i].baravykai + A[i].raudonikiai + A[i].lepsiai;
       }
    }
    //-----------------------
    //Salina duomenys is masyvo
    void salinti(grybai A[], int n, int index)
    {
       for(int i = index; i<n; i++)
       {
           A[i] = A[i+1];
       }
    }
    //----------------------------------
    //Surikiuoja duomenys "Burbuliuko metodu".
    void rikiuoti(grybai A[], int n)
    {
       for(int i = 0; i<n-1; i++)
           for(int j = i+1; j<n; j++)
               if(A[i].diena > A[j].diena)
               {
                   grybai sp = A[i];
                   A[i] = A[j];
                   A[j] = sp;
               }
    }
    //------------------------------------
    //Atsidaro faila išveda rezultatus
    void rodyti(grybai A[], int n)
    {
       ofstream fr(CRfv);
       for(int i = 0; i<n; i++)
       {
           fr<<A[i].diena<<" "<<A[i].baravykai<<" "<<A[i].raudonikiai<<" "<<A[i].lepsiai<<endl;
       }
       int did = didziausias(A, n);
       fr<<A[did].diena<<" "<<A[did].suma;
       fr.close();
    }
    //-------------------------------------------
    //Suranda didžiausia grybų dienos kieki masyvo indeksa
    int didziausias(grybai A[], int n)
    {
       int index = 0;
       for(int i = 0; i<n; i++)
       {
           if(A[i].suma>A[index].suma)
               index = i;
       }
       return index;
    }
    

  5. Viska gerai rodo.

     

    Rezultatai.txt

    įvedus 35

     

    Gyventoju sarasas:

    --------------------

    Vardas1 Pavarde1 1980

    Vardas2 Pavarde2 1970

    Vardas3 Pavarde3 1960

    --------------------

    Gyventojai su nurodytu amziumi:

    Vardas1 Pavarde1 1980

     

    O čia ateičiai jeigu laikysi egzamina su funkcijomis.

     

    #include <iostream>

    #include <iomanip>

    #include <fstream>

    #include <string>

     

    using namespace std;

     

    struct gyventojai{

    string vardas; //Pirmasis strukturos elementas

    string pav; //Antrasis strukturos elementas

    int gimmetai; //Treciasis strukturos elementas

    int amzius; //Kentvirtasis strukturos elementas

    };

    //--------------------------------------

    //Konstantos

    //--------------------------------------

    const char CDfv[] = "duomenys.txt";

    const char CRfv[] = "rezultatai.txt";

    const int Cmax = 30;

    //--------------------------------------

    //Funkcijos

    //--------------------------------------

    void skaityti(gyventojai A[], int &n);

    void rodyti(gyventojai A[], int n, int gamzius);

    //--------------------------------------

    int main()

    {

    gyventojai A[Cmax];

    int n; //Kiek gyventoju

    int gamzius; //gyventojo amzius

    skaityti(A, n);

    cout<<"Iveskite gyventojo amziu: "<<endl;

    cin>>gamzius; //gyventojo amzius

    rodyti(A,n,gamzius);

    return 0;

    }

    //------------------------------------

    //Nuskaitomo iš failo duomenys suzinome amziu ir tuo paciu suzinome kiek yra gyventoju.

    void skaityti(gyventojai A[], int &n)

    {

    n = 0;

    ifstream fd(CDfv);

    while(!fd.eof())

    {

    fd>>A[n].vardas>>A[n].pav>>A[n].gimmetai;

    A[n].amzius=2015-A[n].gimmetai;

    n++;

    }

    fd.close();

    }

    //-----------------------------------------

    // patikrina kiek yra gyventoju su tokiu amziu ir iraso rezultatus i faila

    void rodyti(gyventojai A[], int n, int gamzius)

    {

    ofstream fr(CRfv);

     

    fr<<" Gyventoju sarasas: "<<endl;

    fr<<"--------------------"<<endl;

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

    fr<<left<<setw(15)<<A.vardas<<setw(15)<<A.pav<<" "<<A.gimmetai<<endl;

    fr<<"--------------------"<<endl;

    fr<<"Gyventojai su nurodytu amziumi: "<<endl;

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

    {

    if(A.amzius==gamzius)

    fr<<left<<setw(15)<<A.vardas<<setw(15)<<A.pav<<" "<<A.gimmetai<<endl;

    }

    fr.close();

    }

×
×
  • Pasirinkite naujai kuriamo turinio tipą...