Witam. Mam do napisania kalkulator który nie jest ograniczony zmiennymi a pamięcią. W sensie kalkulator na listach. Mam problem z tymi listami,ponieważ nie wiem jak mam poszczególne elementy 2 list dodawać do siebie,mnożyć dzielić i odejmować...Tworzę liste odwrotną żeby łatwiej było operować w przyszłości na poszczególnych elementach, ale coś mi nie wychodzi... Pytanie jest takie: co musze poprawić żeby chociaż dodawanie zaczęło działać? Dodam że nie ogarniam klas... także jakieś dzikie funkcje na klasach to dla mnie czarna magia...
#include <iostream>
#include <stdio.h>
#include<stdlib.h>
#include <conio.h>
using namespace std;
struct element
{
char cyfra;
struct element *next;
};
struct element *nowy_element(char d)
{
struct element *wsk; //wskaznik pomocniczy
wsk=new element;
wsk->cyfra=d;
wsk->next=NULL; //wskaźnik wskazuje na null, czyli tam gdzie nic nie ma
return wsk;
}
struct element *add_element(struct element *poczatek, struct element *nowy)
{
nowy->next=poczatek;
return nowy;
}
char wczytujemy()
{
struct element *poczatek1, *poczatek2,*poczatek3,*curr1,*curr2,*curr3;//dwie listy, więc dwa oddzielne początki
poczatek1 = poczatek2 = poczatek3 = NULL; //zerujemy początki, staną się one końcami swoich list
char d,e,f;
int state;
cout<<" WPISZ liczbe pierwsza ";
do
{
d=getchar();
poczatek1=add_element(poczatek1, nowy_element(d));
}
while(d!='\n');
cout<<" WPISZ liczbe druga ";
do
{
d=getchar();
poczatek2=add_element(poczatek2,nowy_element(d));
}
while(d!='\n');
cout<< endl;
element *temp1=poczatek1; ///poczatek wypisywania elementow
cout<<endl;
element *temp2=poczatek2; ///poczatek wypisywania elementow
cout<<endl;
element *temp3=poczatek3;
//funkcja dodawania:
while((temp1&&temp2)!=NULL)
{
if((temp1->cyfra)+(temp2->cyfra)>=10)
{
temp3->cyfra=(temp1->cyfra)+(temp2->cyfra);
temp3->cyfra%10;
poczatek3=add_element(poczatek3, nowy_element(temp3->cyfra));
temp1=temp1->next;
temp1->cyfra+1;
}
else
poczatek3=add_element(poczatek3, nowy_element(temp3->cyfra));
temp1=temp1->next;
temp2=temp2->next;
temp3=temp3->next;
}
///poczatek wypisywania elementow
cout<<"LICZBY DODANE= ";
while(temp3!=NULL)
{
cout<<temp3->cyfra;
temp3=temp3->next;
}
return 0;
}
void dodaj(char wczytujemy())
{
wczytujemy();
};
int main()
{
char (*lista1)()=wczytujemy;
dodaj(lista1);
system("pause");
return 0;
}