eMatematikas Prisijunk Forumas Užduotys Testai Pradžia

Gal kas rastų klaidą? Reikšmių įterpimas į masyvą.




#include <iostream>
#include <fstream>

using namespace std;
void nuskaityk(int A[], int &n)
{
    ifstream Df("U1.txt");
    Df>>n;

    for(int i=0; i<n; i++)
    {
        Df>>A[i];
    }
    Df.close();
}
void iterpk(int A[], int & n,int sk,int kur)
{
    for(int i=n; i>kur; i--)
    {
        A[i]=A[i-1];
        A[kur]=sk;
    }
    n++;
}
int main()
{  int n,mas[100];
    nuskaityk(mas,n);
    iterpk(mas,n,17,4);
   
    return 0;
}


A[kur]=sk;
Šis sakinys turėtų būti po ciklu, o ne jame.

valdas3 A[kur]=sk;
Šis sakinys turėtų būti po ciklu, o ne jame.

Vaje...Labai ačiū :)

valdas3 A[kur]=sk;
Šis sakinys turėtų būti po ciklu, o ne jame.


Jei dar galima, paklausiu dėl šio uždavinio. Kur čia prasilenkiu su logika?
https://www.ematematikas.lt/upload/uploads/50000/7500/57852/thumb/p19mt4gjl91omjh6371h15fo13lu2.JPG


#include <iostream>
#include <fstream>

using namespace std;
void nuskaityk(int A[],int B[], int &n, int &p)
{
    ifstream Df("U1.txt");
    Df>>n;

    for(int i=0; i<n; i++)
    {
        Df>>A[i];
    }
    Df>>p;
    for(int i=0; i<p; i++)
    {
        Df>>B[i];
    }
    Df.close();
}
void iterpk(int A[], int & n, int sk,int kur)
{
    for(int i=n; i>kur; i--)
    {
        A[i]=A[i-1];
    }
    A[kur]=sk;
    n++;
}
void sk(int A[], int B[], int & n, int  p)
{
    for(int i=0; i<n; i++)
    {
        for(int j=0; j<p; j++)
        {
            if(B[j]%A[i]==0)
            {
                iterpk(A,n,B[j],i+1);
            }
    }
}
int main()
{
    int n,p,mas2[100],mas[100];
    nuskaityk(mas,mas2,n,p);
    sk(mas,mas2,n,p);
    return 0;
}

Tą žodį "įterpti" galima suprasti įvairiai, tu supratai taip, kad skaičius reikia įterpti į masyvą, o aš suprasiu taip, kad išvestame rezultate reikia įterpti tuos skaičius tarp pirminių ir tada pagrindinis algoritmas atrodys taip:

for(int i = 0; i < n; i++){
  cout << A[i] << " ";
  for(int j = 0; j < m; j++){
    if(B[j]%A[i]==0){
      cout << B[j] << " ";
    }
  }
}

Šio algoritmo rezultatas net bus teisingas, ne taip kaip pavyzdyje (ten skaičiai iš B imami atbulai (nors jo kaip ir nebandžiau paleisti)).
O bandant daryti su įterpimu į masyvą, tai susidursi su problemomis. Visų tų problemų priežastis yra ta, kad masyvas A ciklo viduje kinta. Į tą masyvą yra įterpiami nauji elementai, todėl kai bandai vykdyti antrą išorinio ciklo iteraciją, tai antras masyvo A elementas jau nebebus 7, o bus kažkuris masyvo B elementas, kuri įterpei prieš tai. Galimi du sprendimo būdai, turbūt paprastesnis būdas yra susikurti trečią masyvą, kuriame būtų įterpinėjami tie visi skaičiai. Kodas būtų panašus į mano aukščiau parašytą kodą, t.y. net nereikėtų nieko įterpinėti, tiesiog iš eilės sudėtum į masyvą reikiamus skaičius. Antras būdas yra pakeisti tavo algoritmą taip, kad būtų atsižvelgiama į tai kaip keičiasi masyvas ir atitinkamai įterpti skaičius į tinkamas pozicijas. Gali reikėti truputį pasukti smegenis, bet galbūt tai padės geriau perprasti programavimą :) . Jei nepavyks pačiam sugalvoti kaip tai padaryti, tai paliksiu kodą čia (labai keista buvo vadinti kintamuosius lietuviškais žodžiais...).

pakeista prieš 11 m

valdas3Tą žodį "įterpti" galima suprasti įvairiai, tu supratai taip, kad skaičius reikia įterpti į masyvą, o aš suprasiu taip, kad išvestame rezultate reikia įterpti tuos skaičius tarp pirminių ir tada pagrindinis algoritmas atrodys taip:

for(int i = 0; i < n; i++){
  cout << A[i] << " ";
  for(int j = 0; j < m; j++){
    if(B[j]%A[i]==0){
      cout << B[j] << " ";
    }
  }
}

Šio algoritmo rezultatas net bus teisingas, ne taip kaip pavyzdyje (ten skaičiai iš B imami atbulai (nors jo kaip ir nebandžiau paleisti)).
O bandant daryti su įterpimu į masyvą, tai susidursi su problemomis. Visų tų problemų priežastis yra ta, kad masyvas A ciklo viduje kinta. Į tą masyvą yra įterpiami nauji elementai, todėl kai bandai vykdyti antrą išorinio ciklo iteraciją, tai antras masyvo A elementas jau nebebus 7, o bus kažkuris masyvo B elementas, kuri įterpei prieš tai. Galimi du sprendimo būdai, turbūt paprastesnis būdas yra susikurti trečią masyvą, kuriame būtų įterpinėjami tie visi skaičiai. Kodas būtų panašus į mano aukščiau parašytą kodą, t.y. net nereikėtų nieko įterpinėti, tiesiog iš eilės sudėtum į masyvą reikiamus skaičius. Antras būdas yra pakeisti tavo algoritmą taip, kad būtų atsižvelgiama į tai kaip keičiasi masyvas ir atitinkamai įterpti skaičius į tinkamas pozicijas. Gali reikėti truputį pasukti smegenis, bet galbūt tai padės geriau perprasti programavimą :) . Jei nepavyks pačiam sugalvoti kaip tai padaryti, tai paliksiu kodą čia (labai keista buvo vadinti kintamuosius lietuviškais žodžiais...).

Labai ačiū,labai padėjai :)

Nori sudalyvauti šioje temoje ir parašyti savo pranešimą? Prisijungti »