Rakstīt ziņojumu 
 
Pavediena vērtējums:
  • 0 balsis - 0 vidējais
  • 1
  • 2
  • 3
  • 4
  • 5
saraksts
Autors Ziņa
Zaķītis-Kaķītis Atslēdzies
Īsts zvērs
***

Ziņojumi: 202
Pievienojās: Feb 2009
Reputācija: 4
Ziņojums: #16
RE: saraksts
Ko tieši tavai programmai jādara? Very Happy

Cik redzu pagaidām viņa tikai forši piedrazo atmiņu Very Happy

Un Balodis norādīja pareizā virzienā
(Šo ziņojumu pēdējo reizi modificēja: 15.04.2009 23:12 Zaķītis-Kaķītis.)
15.04.2009 23:12
Atrast visus šī lietotāja rakstītos ziņojumus Citēt šo ziņu atbildē
anh Atslēdzies
Junior Member
**

Ziņojumi: 29
Pievienojās: Aug 2008
Reputācija: 0
Ziņojums: #17
RE: saraksts
nu ir taa ka ir saraksts. teiksim 2 4 7 3 2 5
es ievadu veriibu, piemeeram, 3 un tad programai ir jāizdzēš visas vērtības pēc šī elementa, kas nav vienaadas ar to, respektiivi, tiks izdzeesti pēc 3, 2 un 5

jaa tik tiesaam probleema ir tajaa vietaa, kadas idejas kaa tikt valjaa no taas? Sad
edit: tiko vispaar idzeesu to rindinju(x=x->nextWink un ierakstiiju n vieta tadu vertibu, kas sakrīt ar pirmaa elementa vertibu, tatad ieiet ciklaa un atlikusos izdzeesh, bet tapat errors.
(Šo ziņojumu pēdējo reizi modificēja: 16.04.2009 00:24 anh.)
15.04.2009 23:50
Atrast visus šī lietotāja rakstītos ziņojumus Citēt šo ziņu atbildē
Zaķītis-Kaķītis Atslēdzies
Īsts zvērs
***

Ziņojumi: 202
Pievienojās: Feb 2009
Reputācija: 4
Ziņojums: #18
RE: saraksts
Hint: dzešot elementu norāde ir jāpārraksta ar roku uz jauno.

t.i.
ja ir 2 3 6

izdzēs "3"
2 elem.next = norāde uz 6

tu to neizdari un beigās, kad programma tīra atmiņu [l.delete_element ();], mēģinot dzēst neesošu elementu nokarās visa programma.
(Šo ziņojumu pēdējo reizi modificēja: 16.04.2009 01:54 Zaķītis-Kaķītis.)
16.04.2009 01:54
Atrast visus šī lietotāja rakstītos ziņojumus Citēt šo ziņu atbildē
anh Atslēdzies
Junior Member
**

Ziņojumi: 29
Pievienojās: Aug 2008
Reputācija: 0
Ziņojums: #19
RE: saraksts
jauki ar to tad nu tiku galā, bet tagad ir cita problēma Very Happy
programma vairs neuzkaraas un izdēš visu ko vajag, bet tagad ir tā, ka, kad pēc izdarītajām izmaiņām mēģina izvadīt jaunieguuto sarakstu(lieto Print metodi) tad programma vnk iecikleejas un vada aaraa visaadus skaitļus Sad
Kods:
#include <iostream>
using namespace std;

// Klase - saraksta elements
class elem
{
public:
    int num;
    elem *next;
    elem (int n) { num = n; next = NULL; };
};// Klase - saistītais saraksts
class List
{
protected:
    elem *first, *last, *p;
public:
    List () { first = last = NULL; };
    void add_element (int n);
    void delete_element ();
    void print ();
    void izmest (int n);
};
//Galvenaa programma
int main ()
{
List l;
  int k,n,h;
  cout << "Ievadi:\n";
  cin >> k;
  while (k>0)
  {
    l.add_element (k);
    cout << "Ievadi (0, lai beigtu):\n";
    cin >> k;
  };

  l.print();
  cout << "ievadiet n: " << endl;
  cin >> n;
  l.izmest(n);
  l.print();
  l.delete_element();
  system ("pause");
}
void List::add_element (int n)
{
    elem *p = new elem (n);
    if (first == NULL) first = last = p;
    else last = last -> next = p;
};

void List::delete_element ()
{
p = first;
while (first!=NULL)
{
first = first->next;
delete p;
p = first;
};

};
//te kaut kas nestraadaaa
void List::print ()
{
elem * x = first;
while (x!=NULL){
cout << x->num<<endl;
x = x->next;
}
}
void List::izmest (int n)
{
     elem *x=first;
     while (x!=NULL){
           if (x->num==n){
                          while (x!=NULL)
                          {
                                if (x->num==n){
                                                x=x->next;
                                                }
                                else {
                                    elem*z = x;                                
                                    x=x->next;
                                   cout << "Izdzeesa : "<<z->num<<endl;
                                     delete z;
                                     }
                          }
                          }
           if (x != NULL)
           x=x->next;
          
           }
}
16.04.2009 17:09
Atrast visus šī lietotāja rakstītos ziņojumus Citēt šo ziņu atbildē
PeterB Atslēdzies
(._.)
****

Ziņojumi: 287
Pievienojās: Sep 2008
Reputācija: 10
Ziņojums: #20
RE: saraksts
Pirms elementa dzēšanas derētu pārlikt iepriekšējā elementa norādi next uz nākamo elementu.
16.04.2009 17:40
Apskatīt lietotāja interneta adresi Atrast visus šī lietotāja rakstītos ziņojumus Citēt šo ziņu atbildē
anh Atslēdzies
Junior Member
**

Ziņojumi: 29
Pievienojās: Aug 2008
Reputācija: 0
Ziņojums: #21
RE: saraksts
(16.04.2009 17:40 )PeterB rakstīja:  Pirms elementa dzēšanas derētu pārlikt iepriekšējā elementa norādi next uz nākamo elementu.
es isti nesapratu, varetu paskaidrot kā muļķim Very Happy
20.04.2009 15:18
Atrast visus šī lietotāja rakstītos ziņojumus Citēt šo ziņu atbildē
Zaķītis-Kaķītis Atslēdzies
Īsts zvērs
***

Ziņojumi: 202
Pievienojās: Feb 2009
Reputācija: 4
Ziņojums: #22
RE: saraksts
[Bilde izcili.jpg]

Man šķiet, ka man ir talants. Very Happy Smile Sad Surprised Shocked Confused Cool Laughing Mad Razz Embarassed Crying or Very sad Evil or Very Mad Twisted Evil Rolling Eyes Wink Exclamation Idea Arrow
(Šo ziņojumu pēdējo reizi modificēja: 20.04.2009 16:47 Zaķītis-Kaķītis.)
20.04.2009 16:46
Atrast visus šī lietotāja rakstītos ziņojumus Citēt šo ziņu atbildē
ulzha Atslēdzies
Koto Member
****

Ziņojumi: 683
Pievienojās: May 2006
Reputācija: 16
Ziņojums: #23
RE: saraksts
(16.04.2009 17:09 )anh rakstīja:  Print metodi) tad programma vnk iecikleejas un vada aaraa visaadus skaitļus Sad
Ne jau print tev nestrādā, bet gan iepriekš izdarītās darbības sačakarē sarakstu. Kādreiz vajadzēs iemācīties patstāvīgi atkļūdot programmas... Piem., pamainīt print metodi, lai cikls apstājas pēc, teiksim, 20 reizēm (lai nedrukā "visādus skaitļus" bezgalīgi). Un tad, izsaucot šo print dažādās programmas vietās, varēsi pats secināt, kurā vietā tu radi kļūdu.

Testēt netestēju, bet paskatoties...
Kods:
void List::izmest (int n)
{
     elem *x=first;
     while (x!=NULL){
           if (x->num==n){
                          while (x!=NULL)
                          {
                                if (x->num==n){ // kamdēļ šitais ifs šeit ciklā?? Palasi iepriekšējā topika lappusē, ne jau šitā jādara. Tu tagad pārlec pāri visiem n pēc pirmā atrastā n, tos neizdzēšot un vispār atstājot karājoties gaisā. To sauc par memory leak.
                                                x=x->next;
                                                }
                                else {
                                    elem*z = x;                                
                                    x=x->next;
                                   cout << "Izdzeesa : "<<z->num<<endl;
                                     delete z;
                                     }
                          }
                          }
           if (x != NULL)
           x=x->next;
          
           }
// beigās tagad tas elements, kuram bija x->num==n, nav pareizs! Tā next tagad rāda uz turieni, kur bija sekojošais elements, bet tas tika izdzēsts! Jāpārstellē uz NULL, jo citādi tak sarakstiņš nezina, ka viņš tur tagad beidzas, vai ne? ;)
// un ja tu kkur last pointeri domā lietot, tad tas arī jāpārstellē!
}
(Šo ziņojumu pēdējo reizi modificēja: 20.04.2009 21:50 ulzha.)
20.04.2009 16:53
Atrast visus šī lietotāja rakstītos ziņojumus Citēt šo ziņu atbildē
anh Atslēdzies
Junior Member
**

Ziņojumi: 29
Pievienojās: Aug 2008
Reputācija: 0
Ziņojums: #24
RE: saraksts
psc viss straadaa, visa lielaa vaina bija te
Ulzha rakstīja:// beigās tagad tas elements, kuram bija x->num==n, nav pareizs! Tā next tagad rāda uz turieni, kur bija sekojošais elements, bet tas tika izdzēsts! Jāpārstellē uz NULL,
sito izdariiju un viss darbojaas
20.04.2009 19:17
Atrast visus šī lietotāja rakstītos ziņojumus Citēt šo ziņu atbildē
Rakstīt ziņojumu 


Lēciens uz forumu:



Kontaktifizmati.lvAtgriezties uz augšuAtgriezties pie saturaArhīva skatsRSS sindikācija