Witam, Jeśli ktoś ma czas, może podrzuciłby jakaś wskazówkę. Treść zadania jest następująca
Dla listy zdefiniowanej typami:
struct Tcos { int liczba; char znak; Tcos *next};
napisac funkcje, która do listy zaczynajacej sie pod jakims adresem dopisuje najpierw element zawierajacy sume pól liczbowych tych elementów listy, w których pole znak jest cyfra, a zaraz za nim dopisuje element zawierajacy sume pól liczbowych pozostałych elementów. Pola znakowe powinny byc równe odpowiednio ‘p’ (w elemencie przedostatnim ) i ‘o’ (w elemencie ostatnim)
Oto moje wypociny:
#include <iostream>
using namespace std;
int dodzn=0;
int dod=0;
struct Tcos{ int liczba; char znak; Tcos *next;
};
void drukuj_liste_it(Tcos *adres){
while(adres!=NULL){
cout<<adres->liczba<< " "<<adres->znak<<endl;
adres=adres->next;
}
}
void dodaj(Tcos *adres, Tcos *head){
while(adres!=0){
if(adres->znak>=0&&adres->znak<=9)
dodzn=dodzn+(adres->liczba);
else
dod=dod+(adres->liczba);
adres=adres->next;
}
Tcos *przedostatni;
Tcos *ostatni;
przedostatni= new Tcos;
ostatni= new Tcos;
adres->next=przedostatni;
przedostatni->liczba=dodzn;
przedostatni->znak='p';
przedostatni->next=ostatni;
ostatni->liczba=dod;
ostatni->znak='o';
ostatni->next=NULL;
adres=ostatni->next;
};
int main()
{
Tcos *glowa, *aktualny, *poprzedni, *tmp;
// dodatkowe dane pomocnicze
int dana, ile, ilew, i;
char znakpom;
cout << "Program lista_1 - prezentacja listy jednokierunkowej\n\n";
// Tworzenie listy - kolejno wczytywane rekordy
// dopisywane są na koniec listy
cout << "0 konczy wpisywanie\n";
aktualny = NULL;
poprzedni = NULL;
glowa = poprzedni;
cout << "Podaj liczbe i znak do wstawienia: ";
cin >> dana>>znakpom;
while (dana!=0)
{
// zapamiętujemy dotychczasowy koniec listy
poprzedni = aktualny;
// tworzymy nowy element
aktualny = new Tcos;
// zapisujemy do niego odczytane dane
aktualny->liczba = dana;
(*aktualny).znak=znakpom;
// teraz jest to ostatni element listy
aktualny->next = NULL;
// natomiast poprzedni ostatni już nie jest ostatnim
if (poprzedni != NULL) // Zabezpieczenie na początek
poprzedni->next = aktualny;
else
glowa = aktualny;
// i odczytujemy nowe dane
cout << "Podaj liczbe i znak do wstawienia: ";
cin >> dana>>znakpom;
};
cout << "\nPo wprowadzeniu:\n";
drukuj_liste_it(glowa);
// dotad mam dobrze jesli chodzi przynajmniej o funkcje main, problemy zaczynaja sie wraz z funkcja dodaj
Tcos *glowapom;
glowapom=glowa;
dodaj(glowapom,glowa);
drukuj_liste_it(glowa);
return 0;
}
W zadaniu jest napisane aby wykonac tylko funkcje, jednak chcialem sprawdzic czy dziala ona do stworzonej przeze mnie listy. Jestem początkujący i każda łopatologiczna wskazówka będzie cenna ;D
Acha funkcja którą stworzyłem nie działa jakieś pomysły dlaczego?