Peršokti į turinį

Reikia pagalbos su uždaviniu


Gin te

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 1196 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Recommended Posts

Gal galit padėti nežinau, kodėl nerūšiuoja kaip noriu...:"(

Paveiksliukas

 

#include <iostream>
#include <iomanip>
#include <fstream>
using namespace std;
int x, y, ausra[100], ruta[100], ind = 0;
void irasymas1()
{
    ifstream fd ("ausra.txt");
    fd >> x;
    for (int i = 1; i <= x; i++){
        fd >> ausra;
    }
    fd.close();
}

void irasymas()
{
    ifstream fd ("ruta.txt");
    fd >> y;
    for (int i = 1; i <= y; i++){
        fd >> ruta;
    }
    fd.close();
}

void keitimas(){
for (int i = 1; i <= x; i++){
    for (int j = 1; j <= y; j++){
        if (ausra == ruta[j]){
            for(int k = i; k <= x; k++) {
                ausra[k]=ausra[k+1];
        if (ausra[k] == ausra[k+1] && ausra == ruta[k]){
                ausra[k] = ausra[k+1];
            }
            
            
           // x--;
        }
    }
}

}
}
void isvedimas()
{
    irasymas1();
    irasymas();
    keitimas();
    ofstream fr ("Rezultatai.txt");
    for (int i = 1; i <= x; i++)
    fr <<ausra<< endl;
}
int main()
{
    isvedimas();
    return 0;
}

Nuoroda į komentarą
Dalintis per kitą puslapį

Iš karto galiu pasakyti, kad negalima naudoti globaliųjų kintamųjų, nebent išskirtiniais atvejais (mokykloje tikrai tokių nebus). Dėl to visi masyvai ir kiti kintamieji turi atsidurti main() funkcijoje ir būti paduodami į kitas funkcijas naudojant parametrus. Reikia pasimokyti apie funkcijas ir kaip paduodami parametrai (padavimas pagal reikšmę, padavimas pagal nuorodą).

Funkcijos neturi atlikti begalės dalykų (išskyrus main() funkciją). Matau, kad išvedimo funkcija dėl kažkokių priežasčių kviečia ir skaitymo, ir rikiavimo funkcijas. Išvedimo funkcija turi būti atsakinga tik už išvedimą ir ne daugiau. Taip pat funkcijas reikia kurti tokias, kad jas būtų galima perpanaudoti. Kam kurti dvi skaitymo funkcijas, jei jos yra beveik vienodos? Reikia pagalvoti, kaip sukurti vieną tokią funkciją ir ją du kartus panaudoti. Tą galima padaryti protingai paduodant parametrus.

Reikia pasimokyti, kaip dirbti su masyvais. Pusė kodo su masyvais parašyta gerai, kita – ne. Norint kažką įrašyti į masyvą, tą reikia daryti po vieną elementą, t. y. naudoti laužtinius skliaustus ir indekso numerį, pvz., fin >> masyvas[0]. Taip pat masyvų indeksai prasideda nuo nulio, tad cikluose ne int i = 1, o int i = 0 ir ne i <= n, o i < n.

Galiausiai patarčiau masyvo dydį apsirašyti viršuje kažkokia konstanta, pavyzdžiui #define MAXLEN 32, ir susikonfigūruoti kodo redaktorių, kad būtų galima automatiškai gražiai suformatuoti kodą.

Čia sutvarkiau failų skaitymo, masyvų elementų rikiavimo ir jų išvedimą į ekraną kodą:

#include <fstream>
#include <iomanip>
#include <iostream>

#define MAXLEN 32

using namespace std;

void print_arr(int arr[MAXLEN], int size)
{
    for ( int i = 0; i < size; ++i )
    {
        cout << arr[i] << ' ';
    }

    cout << '\n';
}

void sort_arr(int arr[MAXLEN], int size)
{
    for ( int i = 0; i < size - 1; ++i )
    {
        for ( int j = 0; j < size - i - 1; ++j )
        {
            if ( arr[j] > arr[j + 1] )
            {
                int temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
}

void fread_arr(const std::string& filename, int arr[MAXLEN], int& count)
{
    ifstream fin(filename);
    if ( !fin )
        return;

    fin >> count;
    for ( int i = 0; i < count; ++i )
    {
        fin >> arr[i];
    }

    fin.close();
}

int main()
{
    int ausra_stamp_count;
    int ausra_stamps[MAXLEN];

    int ruta_stamp_count;
    int ruta_stamps[MAXLEN];

    fread_arr("ausra.txt", ausra_stamps, ausra_stamp_count);
    fread_arr("ruta.txt", ruta_stamps, ruta_stamp_count);

    sort_arr(ausra_stamps, ausra_stamp_count);
    sort_arr(ruta_stamps, ruta_stamp_count);

    print_arr(ausra_stamps, ausra_stamp_count);
    print_arr(ruta_stamps, ruta_stamp_count);

    return 0;
}
Redaguota , nario Tautedorus
Nuoroda į komentarą
Dalintis per kitą puslapį

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 1196 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Prisijungti prie diskusijos

Palikti atsakymą galite iš karto, o užsiregistruoti vėliau. Jeigu jau turite paskyrą mūsų forume, Prisijunkite.

Svečias
Atsakyti šioje temoje...

×   Įklijuotas tekstas turi teksto formatavimą.   Pašalinti teksto formatavimą

  Galimi tik 75 veidukai.

×   Nuoroda buvo automatiškai įterpta.   Įterpti nuorodą paprastai

×   Jūsų ankstesnis pranešimas buvo atkurtas.   Išvalyti redaktorių

×   Jūs negalite įkelti nuotraukas tiesiogiai.Įkelkite arba įdėkite nuotraukas iš URL.

  • Šiame puslapyje naršo:   0 nariai

    • Nėra registruotų narių peržiūrinčių šį forumą.

Skelbimai


×
×
  • Sukurti naują...