Pereiti prie turinio

C++ Bakterijos(Pagalbos)


Rekomenduojami pranešimai

Sveiki, nesigauna uždavinys. Čia kiek kodo parašiau, gal kas pagalbėsit? :) Išveda 8 7 8 7 2 2 tokius skaičius, o ne kokie uždavinio atsakymo skiltyje nurodyti.

#include <iostream>
#include <fstream>
using namespace std;
/*--------------------------------------*/
const char CDfv []="Duomenys.txt";
const char CRfv [] ="Rezultatai.txt";
const int m = 100;
/*--------------------------------------*/
void Nuskaitymas(const char fv[], int &n, int &d, int A[]);
void Veiksmas(int &n, int d, int A[]);
void Isvedimas(const char fv[], int A[], int n);
void Salinimas(int A[], int &n, int ind);
/*--------------------------------------*/
int main() {
int n, d, Bakt[m];

Nuskaitymas(CDfv, n, d, Bakt);
Veiksmas(n, d, Bakt); Isvedimas(CRfv, Bakt, n);
return 0;
}
void Nuskaitymas(const char fv[], int &n, int &d, int A[]) {
ifstream fd(fv);
fd >> n >> d;
for (int i = 0; i < n; i++) {
	A[i] = 0;
}
for (int j = 0; j < n; j++)
	fd >> A[j];

fd.close();
}
void Veiksmas(int &n, int d, int A[]){
   int nr =0;
   while(n > nr){
      if(A[nr]>A[nr+1]&& A[nr]<7){
       A[nr]+=A[nr+1];
       Salinimas(A,n,A[nr+1]);
      }
      else if(A[nr] < A[nr+1] && A[nr+1] <7){
       A[nr]+=A[nr+1];
       Salinimas(A,n,A[nr+1]);
      }
      else
       nr++;
   }
}
void Salinimas(int A[], int &n, int ind) {
for (int i = ind; i < n - 1; i++){
	A[i] = A[i + 1];
}
n--;
}
void Isvedimas(const char fv[], int A[], int n) {
ofstream fr(fv);
for (int i = 0; i <= n; i++)
	fr << A[i] << " ";

fr.close();
}

 

https://www.ipix.lt/image/4lf7

Redagavo Reserved
Nuoroda į pranešimą
Dalintis kituose puslapiuose
#include<iostream>
#include<cmath>
#include<iomanip>
#include<climits>
#include<fstream>
using namespace std;

void skaityti (int & n, int & d, int a[]) {

              ifstream f ("73-5.txt");
              f>>n>>d;
              for (int i=0; i<=n; i++)
              f>>a[i];

              f.close();
}

void skaiciuoti (int & n, int d, int a[]) {

   for (int i=0; i<=n; i++){
       for (int x=i+1;x<=n;x++){
           if (a[i]<d&&a[i+1]<d){
               a[i]=a[i] + a[i+1];
               for (int u=i+1; u<=n; u++){
                   a[u]=a[u+1];
               }
               n--;
           }
       }
   }
}

void spausdinti (int n, int a[]) {

   ofstream r ("rez73-5.txt");

   for (int i=0; i<=n; i++)
   r<<a[i]<<" ";
   r<<endl;

   r.close();
}

int main()
{
int n,d;
int a[100];

skaityti(n,d,a);
skaiciuoti(n,d,a);
spausdinti(n,a);

return 0;
}

Nežinau, ar veiks teisingai, patikrink :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Vektorius yra masyvas, kuris gali dinamiškai keisti dydį.

Aš dabar nebepamenu teorijos bet šiaip tai, tai neturėtų būti teisinga, kad vektorius yra masyvas, nes masyvai visų pirmą neturi metodų, tuo labiau C++`e , o vektorius turi.

 

Čia būtų panašiai kad sakyti kad Listas yra masyvas, nes jis veikia kaip masyvas (galima pridėti atimti ir nepergyvent dėl dydžio), nors Listas yra klasė, kuri paveldi interfeisus, kur vienas jų suteikia galimybe pvz Add.

 

Jei klystu tai pataisyk mane, bet šiaip pagal logiką tai kaip?

 

O štai masyvas jau tada būtų tų klasių (o tiksliau jų objektų) rinkinys.

Redagavo kaciukas111
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Aš dabar nebepamenu teorijos bet šiaip tai, tai neturėtų būti teisinga, kad vektorius yra masyvas, nes masyvai visų pirmą neturi metodų, tuo labiau C++`e , o vektorius turi.

 

Čia būtų panašiai kad sakyti kad Listas yra masyvas, nes jis veikia kaip masyvas (galima pridėti atimti ir nepergyvent dėl dydžio), nors Listas yra klasė, kuri paveldi interfeisus, kur vienas jų suteikia galimybe pvz Add.

 

Jei klystu tai pataisyk mane, bet šiaip pagal logiką tai kaip?

 

O štai masyvas jau tada būtų tų klasių (o tiksliau jų objektų) rinkinys.

 

Taip, vektorius yra sudėtingesnė duomenų struktūra, nei masyvas. Aš turėjau omeny, kad funkcionalumo (gal teisingiau būtų sakyti pritaikymo) požiūriu tai yra analogiškos duomenų struktūros. Skirtumas tas, kad vektorius gali pats automatiškai pasirūpinti savo dydžiu (galima dydį keisti ir rankiniu būdu).

 

Sąrašas jau nebepanašus į masyvą, nes įprastai negalima tiesiogiai kreiptis į N-tąjį elementą – turi pradėti nuo pirmo elemento ir pereiti nuosekliai kol pasieksi N–tąjį.

Redagavo wi_lius
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Taip, vektorius yra sudėtingesnė duomenų struktūra, nei masyvas. Aš turėjau omeny, kad funkcionalumo (gal teisingiau būtų sakyti pritaikymo) požiūriu tai yra analogiškos duomenų struktūros. Skirtumas tas, kad vektorius gali pats automatiškai pasirūpinti savo dydžiu (galima dydį keisti ir rankiniu būdu).

 

 

Taip

 

Sąrašas jau nebepanašus į masyvą, nes įprastai negalima tiesiogiai kreiptis į N-tąjį elementą – turi pradėti nuo pirmo elemento ir pereiti nuosekliai kol pasieksi N–tąjį.

 

Apie kokį sąrašą kalbi? Apie List ar kokį? Liste yra galimybė tiesiogiai prieiti prie elemento, o štai tokiose struktūrose kurios yra FIFO (First In First Out), FILO (First In Last Out) tipo, ten tai tikrai yra su dizaininta taip kad reikia eiti tiesiai per aplinkui, pvz queue.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Apie kokį sąrašą kalbi? Apie List ar kokį? Liste yra galimybė tiesiogiai prieiti prie elemento, o štai tokiose struktūrose kurios yra FIFO (First In First Out), FILO (First In Last Out) tipo, ten tai tikrai yra su dizaininta taip kad reikia eiti tiesiai per aplinkui, pvz queue.

 

Taip yra todėl, nes

  • kai kuriuose kalbose List iš tikro nėra sąrašas (pavyzdžiui, ant C# List yra labiau vektorius, o LinkedList jau yra sąrašas; atitinkamai yra ir Java kalboje su ArrayList ir LinkedList);
  • sąrašo duomenų struktūros turi metodus, kurie grąžina N-tajį narį, tačiau iš tikrųjų metodo viduje pereinama nuo pirmo elemento iki tau reikiamo – tokiu būdu tiesiog nematai šio proceso;

 

Pavyzdžiui, C++ kalboje list neturi metodo tiesiogiai pasiekti N-tajį elementą, nes tai yra grynas sąrašas:

Each element keeps information on how to locate the next and the previous elements, allowing constant time insert and erase operations before or after a specific element (even of entire ranges), but no direct random access.

 

C# ir Java kalboje yra dvi realizacijos: viena panašesnė į vektorių, kita į sąrašą.

        	Internal Implementation 	Item[i]/Find(i) 
List    	Array                    	O(1)
LinkedList 	Doubly linked list       	O(n)

 

Būtent šiose kalbose ir įdėti metodai pasiekti konkretų elementą, nes List yra kaip vektorius ir N-tajį elementą gali surasti labai greitai (sudėtingumas O(1)). Tai yra vienas iš jo pranašumų prieš LinkedList, kuris atitinkamo elemento ieško nuo pat pradžios (sudėtingumas O(n)).

 

Galiausiai Stack ir Queue dažnai realizuojami paimant sąrašo ar vektoriaus duomenų struktūras ir paslepiant dalį jų metodų (pavyzdžiui, jeigu paimsi LinkedList ir naudosi tik pushBack() bei popFront() metodus, gausis lygiai tas pats, kas naudoti Queue).

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

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