Ich versuche, eine Dezimalzahl zu Binärzahl mit Stacks zu konvertieren, und ich muss Strukturen verwenden.Konvertieren von Dezimalzahl in Binärzahl mit Stapel
Jetzt von meinem Verständnis von Strukturen können wir Elementfunktionen in ihnen haben. Und Stack folgt einer LIFO-Strategie.
Wir können einen Stack erstellen, indem wir eine Struktur erstellen, einige Member deklarieren und einige Funktionen haben, um diese Member zu initialisieren und zu bearbeiten.
Also habe ich versucht, eine Struktur mit den oben genannten Dingen und meinem Verständnis zu deklarieren, aber ich scheint immer noch nicht das Konzept richtig zu bekommen. Ich glaube, es ist ein Fehler meinerseits. Aber das Lesen von Foren hilft immer noch nicht, da wir noch keine Klassen unterrichtet haben und auf jedem Forum sind Strukturen und Klassen vermischt.
Hier ist mein Code so weit, jede Hilfe und Anleitung in Bezug auf das Konzept und die Logik würde sehr geschätzt werden.
#include<iostream>
using namespace std;
struct bin{
int num[15];
int ci;
void init()
{
ci = 0;
for (int i = 0;i < 15;i++)
num[i] = -1;
}
void push(int n)
{
num[ci] = n;
ci++;
}
int pop()
{
int temp = num[--ci];
num[ci] = -1;
return temp;
}
};
int main()
{
int inp, count = 0;
bin var;
cout << "Enter a decimal number to convert into binary: ";
cin >> inp;
while (inp != 0)
{
int rem = inp % 2;
cout << "rem= " << rem << endl;
inp /= 2;
cout << "inp= " << inp << endl;
var.push(rem);
count++;
}
cout << "\nYour binary is: ";
while (count != 0)
{
cout << var.pop();
count--;
}
return 0;
}
Ich versuchte mein Bestes, um die Fehler zu finden, konnte aber nicht. Also, habe ich einfach am Ende verwendet Arrays und implementiert den Code wie folgt
#include<iostream>
using namespace std;
void push(int bin[], int n, int &ci);
void init(int bin[], int &count, int &ci);
int pop(int bin[], int &ci);
void display(int bin[], int &count, int &ci);
void findBinary(int bin[], int &count, int&ci, int &inp);
int main()
{
int inp, count, ci;
int bin[20];
char c = '\0';
init(bin,count,ci);
cout << "Enter a decimal number to convert into binary: ";
cin >> inp;
findBinary(bin, count, ci, inp);
display(bin, count, ci);
return 0;
}
void init(int bin[], int &count, int &ci)
{
count = 0;
ci = 0;
for (int i = 0;i < 20;i++)
bin[i] = -1;
}
int pop(int bin[], int &ci)
{
int temp = bin[--ci];
return temp;
}
void push(int bin[], int n, int &ci)
{
bin[ci] = n;
ci++;
}
void display(int bin[], int &count, int &ci)
{
cout << "\nYour binary is: ";
while (count != 0)
{
cout << pop(bin, ci);
count--;
}
cout << endl;
}
void findBinary(int bin[], int &count, int&ci, int &inp)
{
while (inp != 0)
{
int rem = inp % 2;
inp /= 2;
push(bin, rem, ci);
count++;
}
}
Also meine Fragen sind: 1. Wenn wir eine Funktion innerhalb einer Struktur zu schreiben, wird die Funktion ausgeführt wird, wenn wir einen Strukturtyp-Objekt erstellen ? 2. Ist die Methode, die ich zum Implementieren des Stacks verwendet habe, im ersten Beispiel mit struct korrekt?
Danke, dass Sie darauf hingewiesen haben, aber ich habe diesen Code nicht verwendet, da er nicht kompiliert wurde. Aber ich muss immer noch den Wert in der Pop-Funktion ersetzen, um den Wert zu löschen (-1 wird als gelöscht angenommen). –
Dein Code im ersten Beispiel kompiliert und läuft gut (und richtig) für mich. Erweitern Sie auf "Ich finde das Konzept immer noch nicht richtig". – hnefatl
Zweitens, meine ursprüngliche Pop-Funktion ist korrekt. ci zeigt ursprünglich auf einen leeren Index, um Daten einzugeben. –