Witam! mam do napisania program, który dodaje liczby na listę, a następnie przenosi na drugą listę tylko liczby dodatnie i je wyświetla. Wszystko byłoby dobrze, gdyby nie to, że w poleceniu było napisane wyraźnie, żeby funkcja Lista dodatnie zależała tylko od parametru (Lista wejscie). U mnie w programie jest jeszcze zmienna struct numery.
Pomożecie mi to zamienić, żeby wszystko działało dobrze?
#include<iostream>
#include<fstream>
#include<stdlib.h>
#include<string.h>
using namespace std;
struct numery
{
int liczba;
};
typedef struct element
{ struct numery p;
struct element *next;
}Element;
typedef Element *Lista;
void wyswietl(Lista a)
{
cout<<"\n";
while(a)
{
cout<<(a->p).liczba<<endl;
a=a->next;
cout<<"\n";
}
}
Lista dodaj_ost(struct numery a, Lista b)
{
Lista d;
Lista pocz=b;
d=new Element;
d->p=a;
d->next=NULL;
if(!b)
return d;
Lista c;
while(b)
{
c=b;
b=b->next;
} c->next=d;
return pocz;
}
Lista dodatnia(Lista wejscie, struct numery a)
{
Lista d, b=NULL;
while(!NULL)
{if((wejscie->p.liczba)>0)
Lista pocz=b;
d=new Element;
d->p=a;
d->next=NULL;
if(!b)
return d;
Lista c;
while(b)
{
c=b;
b=b->next;
} c->next=d;
wejscie->next;
}
return d;
}
int main()
{Lista b=NULL; Lista d=NULL; int x; struct numery z;
while(1)
{ cout<<"\n";
cout<<"Wybierz opcje:\n";
cout<<"1-wyswietl elementy listy\n";
cout<<"2-dodaj element na koniec listy\n";
cout<<"3-wybierz dodatnie\n";
cin>>x;
switch(x)
{ case 0:return 0;
case 1:{wyswietl(b);break;}
case 2:{cout<<"Podaj numer indeksu:\n";
cin>>z.liczba;
b=dodaj_ost(z,b); break;}
case 3:{d=dodatnia(b, z);
wyswietl(d);break;}
default:return 0;
}
}
return 0;
}