Ich versuche, ein Programm zu schreiben, wo der Benutzer ein Array Nummern und alphabetische Zeichen einführt. Dann liest das Programm das Array, wenn er eine Nummer sieht, sollte das Programm diese Nummer in einen Stapel schieben. Wenn er jedoch ein alphabetisches Zeichen sieht, wird die letzte gedrückte Zahl angezeigt.Push, Pop und Display-Funktionen von einer Zeichenfolge zu einem Stapel
Bisher habe ich diesen Code:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
#define MAX 20
int top, i;
void push (double stack[], double x, int top)
{
stack[top] = x;
}
int pop (double stack[])
{
double x;
stack [top]=x;
return x;
}
void display (double stack[],int top)
{
int i;
printf ("\n The stack is: ");
for (i=0; i<=top; i++)
{
printf ("%lf\n",stack[i]);
}
}
void main()
{
int r;
int stack[10];
char array[10];
printf("introduce the numbers");
fgets(array,MAX,stdin);
int l;
r=strlen(array);
top=0;
for (l=0;l<=r;l++)
{
int n;
if (isdigit(array[l]))
{
push(stack,array[l],top);
top=top+1;
}
if (islower(array[l]))
{
pop(stack);
printf("you have popped %d", n);
top=top-1;
}
}
display(stack,top);
}
Aus irgendeinem Grund das Programm nicht funktioniert, wenn ich 22a
einführen die Ausgabe:
you have popped 4194432 The stack is: 50.00000 50.00000
Ich bin besonders interessiert, wie sollte ich Schreibe den Pop, drücke und zeige an, damit dieses Programm funktioniert. Wie kann ich es tun?
Danke
Ich programmiere in C
Sie lesen zwanzig Zeichen '# definiere MAX 20' in ein Array der Größe 10. Außerdem hast du in deiner Schleife 'for (l = 0; l <= r; l ++)', was dazu führen kann, dass i n ein segfault, wenn Sie versuchen, auf 'stack [l]' zuzugreifen, wenn 'l == r'. – ForceBru
Außerdem rufen Sie 'pop (stack)' und _nicht den Rückgabewert_ (!), Also was lässt Sie glauben, dass eine nicht initialisierte Variable 'n' einen nützlichen Wert enthält? – ForceBru
Immer wenn Sie loopen, tun Sie 'for (i = 0; i <= threshold; i ++)', was keinen Sinn ergibt: Sie versuchen, 'threshold + 1' Werte aus dem Array zu bekommen, während Sie Definitiv nur "Schwelle" von ihnen. – ForceBru