פורסם 2008 במרץ 2317 שנים שלום חבריםאני צריך לבנות מערך של מבנים ולשלוח את המערך לפונקציה מסוימת, אבל כאשר אני מנסה לקרוא/לכתוב נתונים בתוך הפונקציה, אני מקבל חלון שגיאה (הקוד מתקמפל וזה קורה בזמן ההרצה - חלון דו"ח שגיאות של מיקרוסופט).סימנתי בתוך הקוד את השורה הבעייתית. (בפונקציה findmax)המבנה הוא:1. מספר שמוגדר בשם top2. מחסנית.תודה לעוזרים#include "mystack_ar.h"#define N 5void reset (stack *s){ s->top=EMPTY;}void push(data c,stack *s){ s->top++; s->a[s->top] = c;}data pop(stack *s){ return (s->a[s->top--]);}data top(const stack *s){ return (s -> a[s->top]);}boolean empty(const stack *s){ return ((boolean) (s-> top == EMPTY));}boolean full(const stack *s){ return ((boolean) (s-> top == FULL));}void findmax(stack *arr[],int low, int high){ int max1,max2; //if (low==high) { max1=arr[0]->top; -------------------- השורה הבעייתית //while (empty(&arr)) {} //}}void main(){ int i; struct stack arr[N]; arr[0].top=1; arr[1].top=5; arr[2].top=4; arr[3].top=2; arr[4].top=3; for (i=0;i<N;i++) reset(&arr[i]); findmax(&arr,0,N);}header file#ifndef STACK_H#define STACK_H#include <stdio.h>#define MAX_LEN 100#define EMPTY -1#define FULL (MAX_LEN -1)typedef enum boolean {false,true} boolean;typedef char data;typedef struct stack { data a[MAX_LEN]; int top; } stack;/* this code declares the structure type STRUCT STACK, and the same time uses a typedef to give struct stack the new name STACK.*/void reset (stack *);/* resets or initializes the stack */void push(data ,stack *);/* assumes the stack is not full */data pop(stack *);/* assumes the stack is not empty */data top(const stack *);boolean empty(const stack *);boolean full(const stack *);#endif
פורסם 2008 במרץ 2317 שנים כשאתה מקמפל אתה לא מקבל אזהרות שהתעלמת מהם במקרה ?תשנה את findmax שיקבל stack arr[] (בלי ה *), תשנה את הפונקציה שתעבוד עם סינטקס של מערכים (נקודה במקום חץ) ותעביר לה את arr בלי &.
פורסם 2008 במרץ 2317 שנים וליתר דיוק, הטיפוס הזה:stack *arr[]הוא מערך של מצביעים ל-stack.הטיפוס של הביטוי הזה:&arr[0]הוא מצביע למערך של stack.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.