الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مكشةل ساعدوني .. كيف بدي أطبع المعلومات

مغلق
بدأه فتى الشوتوكان في 28 أكتوبر 2004 · 13 رد · 653 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

اخواني الأعزاء ممكن تساعدوني بهالمشكلة ..

عندي هالمشكلة بهالبرنامج

لما أكبس حرف P بيدخلي معلومات عن STRUCTURE .. رقم وبعدها اسم .. وكل ما اكبس P بيعملي هالحكي ..

ولكن لما أعمل قرائة لهذه السلسلة من الSTRUCTURE عن طريق حرف R .. ما بيقرأ كل السلسلة ...

علما انه بقرأة البرنامج عن طريق الFUNCTION printstack

البرنامج امامكم ... ما هو الحل ؟؟؟؟؟؟

#include<stdio.h>
#include<malloc.h>
#include<string.h>
struct employee
{
	int no;
	char name[80];
	struct employee *next;
};
typedef struct employee node;
node *first,*last,*n;
node *newnode()
{
  n=(node*)malloc(sizeof(node));
 	 return(n);
}

void PushNode()
{
	n=newnode();
	scanf("%d%s",&n->no,&n->name);
	if(first==NULL)
	first=n;	
	else{
  n->next=first;
     first=n;
	}
}
void PopNode()
{
	printf("Would You Want To Delete First Node(Y/N)");
	char select;
	scanf("%s",&select);
	if(select=='Y')
	{
	n=first;
	first=first->next;
	n->next=NULL;
	}

}
void PrintStack()
{
	n=first;
	if(first==NULL)
  printf("THE NODE IS EMPTY");
	else{
	if(n!=last->next){
  printf("%d %s\n",n->no,n->name);
     n=n->next;
    
	}
 	 printf("%d %s\n",n->no,n->name);
	}

}

void main(void)
{

	char choice;
	printf("Welcome To The Stack Program");
	printf("\n\nP  Push Node\nO  Pop The Stack\n");
	printf("R  Print The Contnts Of The Stack\nE  Exit The Program.");
	printf("\n\n\nPlease Make Your Choice:\n");
	first=NULL;
	scanf("%c",&choice);
	while(choice!='E')
	{
	if((choice=='P')||(choice=='O')||(choice=='R'))
	{
  if(choice=='P')
 	 PushNode();
  else
 	 if(choice=='O')
    PopNode();
 	 else
    if(choice=='R')
   	 PrintStack();
    
    }
	else
	printf("Choice Ather Leter\n");
	choice=NULL;
	scanf("%c",&choice);
	}
}
#2

وعليكم السلام ورحمة الله وبركاته

خطائك بسيط مره

شوف معي

void PrintStack()
{
n=first;
if(first==NULL)
 printf("THE NODE IS EMPTY");
else{
if(n!=last->next){  // error 
 printf("%d %s\n",n->no,n->name);
    n=n->next;
   
}
  printf("%d %s\n",n->no,n->name);
}

}

لتعديل الخطاء عليك ان تكتب

void PrintStack()
{
n=first;
if(first==NULL)
 printf("THE NODE IS EMPTY");
else{
while(n->next!=NULL){ //  هنا تم التعديل
 printf("%d %s\n",n->no,n->name);
    n=n->next;
   
}
  printf("%d %s\n",n->no,n->name);
}

}

جرب الكود بعد التعديل

وإن شاء الله اكون قد وفقت في مساعدتك

#3

أخي شكرا إلك .. البرنامج يعمل .. ولكن بعد ما يقرألي المعلومات اللي دخلتها .. بيقرألي بعدها معلومات لا نهائية .. بيصير عداد ما بيخلص .. من وين الخلل .. هل هو من عند

while(choice!='E')
{
if((choice=='P')||(choice=='O')||(choice=='R'))
{
 if(choice=='P')
  PushNode();
 else
  if(choice=='O')
   PopNode();
  else
   if(choice=='R')
    PrintStack();
   
   }
else
printf("Choice Ather Leter\n");
choice=NULL;
scanf("%c",&choice);
}
}

انت جرب البرنامج .. وبيطبعلك بعد ما تدخل البيانات البيانات نفسها ومعلومات غير نهائية ....

مشكور اخي على المساعدة

#4

وعليكم السلام

نعم جربت البرنامج ويعمل

وهذا هو الكود بعد التعديل

واشكرك لان برنامجك هو برنامج انا مكلف به ايضا

ولكن بلغة سي ++

#include<stdio.h>
#include<malloc.h>
#include<string.h>
struct employee
{
int no;
char name[80];
struct employee *next;
};
typedef struct employee node;
node *first,*last,*n;
node *newnode()
{
 n=(node*)malloc(sizeof(node));
  return(n);
}

void PushNode()
{
n=newnode();
scanf("%d%s",&n->no,&n->name);
if(first==NULL)
first=n; 
else{
 n->next=first;
    first=n;
}
}
void PopNode()
{
printf("Would You Want To Delete First Node(Y/N)");
char select;
scanf("%s",&select);
if(select=='Y')
{
n=first;
first=first->next;
n->next=NULL;
}

}
void PrintStack()
{
n=first;
if(first==NULL)
printf("THE NODE IS EMPTY");
else{
while(n->next!=NULL){ //  ??C E? C?E?I??
printf("%d %s\n",n->no,n->name);
   n=n->next;
  
}
 printf("%d %s\n",n->no,n->name);
}

}




void main(void)
{

char choice;
int flag=0;
printf("Welcome To The Stack Program");
printf("\n\nP  Push Node\nO  Pop The Stack\n");
printf("R  Print The Contnts Of The Stack");
printf("\nE  Exit The Program.");
printf("\n\n\nPlease Make Your Choice:\n");
first=NULL;
scanf("%c",&choice);
do
{

if((choice=='P')||(choice=='O')||(choice=='R') || (choice=='E'))
{
 if(choice=='P')
  PushNode();
 else
  if(choice=='O')
   PopNode();
  else
   if(choice=='R')
    PrintStack();
   
   
else
  if(choice=='E')
   flag=1;
}
else
	printf("Choice Ather Leter\n");
     choice=NULL;

    scanf("%c",&choice);

}while(flag !=1);

}
#5

أخي العزيز .. شكرا جزيلا على تعاونك معي .. بس انا حغلبك معي كمان مرة ..

هي البرنامج بعد تعديل بالmain لإنه لسا الإشكال ما راح من هالبرنامج...

#include<stdio.h>
#include<malloc.h>
#include<string.h>
struct employee
{
	int no;
	char name[80];
	float salary;
	struct employee *next;
};
typedef struct employee node;
node *first,*last,*n;
node *newnode()
{
  n=(node*)malloc(sizeof(node));
  	return(n);
}
void PushNode()
{

	n=newnode();
	printf("Enter The Number And The Name Of The Employee\n");
	printf("The Number:");
	scanf("%d",&n->no);
	printf("The Name:");
	scanf("%s",&n->name);
	if(first==NULL)
	first=n;	
	else{
  n->next=first;
     first=n;
	}
}
void PopNode()
{
	printf("Would You Want To Delete First Node(Y/N)");
	char select;
	scanf("%s",&select);
	if(select=='Y')
	{
	printf("The Node That You Deleted It:\n%d  %s\n",n->no,n->name);
	n=first;
	first=first->next;
	n->next=NULL;
	}
	else{
  if(select=='N')
  	printf("You Wont Delete Any Node...OK\n");
  else{
  	printf("Pleaze Inter Y or N\n");
  }
	}


}



void PrintStack()
{
	n=first;
	if(first==NULL)
  printf("THE NODE IS EMPTY\n");
	else{
  while(n!=NULL){
  	printf("%d %s\n",n->no,n->name);
  	n=n->next;
  }
	}
}


void TopStack()
{
	printf("\nDo You Want Update The First Node In Stack?(Y/N)");
	char who;
	scanf("%s",&who);
	if(who=='Y')
	{
  printf("The Node That You Will Update It\n%d %s\n",n->no,n->name);
  n=first;
  first=first->next;
  n->next=NULL;
  printf("The Number:");
  scanf("%d",&n->no);
  printf("The Name:");
     scanf("%s",&n->name);
  n->next=first;
  first=n;
	}
	else
  printf("No Information Update\n");
}


void main(void)
{
	char choice=NULL;
	printf(" ___________________________________________\n");
	printf("|        Welcome To The Stack Program      |\n");
	printf("|                                          |\n");
	printf("|                                          |\n");
	printf("|                                          |\n"); 
	printf("|                                          |\n"); 
	printf("|       1  Push Node.                      |\n");
	printf("|       2  Pop The Stack.                  |\n");
	printf("|       3  Top The Stack.                  |\n");
	printf("|       4  Print The Contnts Of The Stack. |\n");
	printf("|       5  Exit The Program.               |\n");
	printf("|                                          |\n");
	printf("|                                          |\n");
	printf("|                                          |\n");
	printf("|        Please Make Your Choice:          |\n");
	printf("|                                          |\n");
	printf("|__________________________________________|\n");
	first=NULL;
	while(choice!=5)
	{
  switch(choice)
  {
  case 1:
  	PushNode();
  	break;
  case 2:  
            PopNode();
  	break;
  case 3:
  	TopStack();
  	break;
  case 4:
  	PrintStack();
      break;
             default:
  	break;
  }

  	printf("Enter The Choice: \n");

	scanf("%d",&choice);

  }

}

خليك معاي شوي ..

إنسخ هالكود على برنامج الMicrosoft Visual C++ 6.0

وإعمل عليه EXCUTE ... وإدخل رقم 1 ولما تدخل البيانات

روح على رقم 4 .. وبهالرقم حيقرألك البيانات ...

هوي البرنامج حيقرألك البيانات بس بعد ما يقرأ حيصير في خلل ..

شو هاد الخلل .. وشو حله . انا متأكد انه هالخلل من ال functioc void PrintStack()

بعينك الله شوفلي هالمشكلة ... غلبناك احنا .. :)

تم تعديل هذه المشاركة بواسطة فتى الشوتوكان في 29 أكتوبر 2004 في 19:17

#6

كان ودي اساعدك

بس انا مابدرس لغة السي

ادرس لغة السي ++

فعشان كذا حاولت افيدك في اللي اقدر عليه

لان برنامجك على borland يشتغل بس الفيجول بتجيلي مشكله في

function Top

and

Function print

انا بحاول فيه وإن شاء الله تجي معي لان برنامجك هو واجب عندي كمان

#7

أخي العزيز انا تعلمت اول شي لغة الc++ يعني بعرف للغتين ..

انسى scanf والprintf .. خلينا نشتغل بهالبرنامج كإمنه cin و cout >???

#8

السلام عليكم

اعتقد والله اعلم ان المشكله فى newnod

else{
 n->next=first;
    first=n;
}

لماذا تؤاشر ب n->next إلى first المفروض n->next يصبح مؤشر إلى null.

هكذا

else{
 n->next=null;
    first=n;
}

والسلام

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#9

اخي ما جعلنا n->next تأشر على first فهذه الحالة حنضيع ال n

#10

السلام عليكم

اخى لاحظ ان n تؤشر إلى first و first تؤشر إلى n يعنى حلقه مغلقه, عندما تستدعى printStack تدخل فى loop لا نهائى يعنى n توصلك إلى first و first تعيدك إلى n.

والسلام

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#11

السلام عليكم

انا اسف على المعلومه الخاطئه معك حق اخى, سوف اراجع الكود بالكامل واوافيك إن شاء الله.

والسلام

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#12

السلام عليكم

وجدت الحل .

void PushNode()
{

n=newnode();
printf("Enter The Number And The Name Of The Employee\n");
printf("The Number:");
scanf("%d",&n->no);
printf("The Name:");
scanf("%s",&n->name);
if(first==NULL){
first=n; 
n->next=NULL;
}
else{
 n->next=first;
    first=n;
}
}

عندما تقوم بوضع عنصر جديد من نوع n لابد ان تجعل n->next توشير إلى NULL, وإلى ستاخذ قيمه عشوائيه.

والسلام

والسلام

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#13

صح اخي .. ألف شكر إلك ..

هاد هو الحل ... :) :)

شكرا يا عبقري

#14

السلام عليكم

مشكلتك وانحلت

وهذا حل واجبي انا ولكن بلغة السي ++ نفس فكرة برنامجك بس باختلاف الاسماء

#include<iostream>
#include<string.h>
#include<stdio.h>
#include<conio.h>
using namespace std;
//---------------------------------
struct Node
{
 char	name[20];
 int	ssi;
 Node* next;
};
//-------------------------------------
class Queue
{
private:
	Node* front;
	Node* back;

public:
	Queue();
	void add();
	void remove();
	void display();
	void first();
	void last();

};
//-------------------------
void menu();
//---------------------------

Queue::Queue()
{
	front=NULL;

	back=front;
}
//------------------------------
void Queue::add()
{
	Node* temp;
	temp=new Node;
	temp->next=NULL;
	cout<<"\n enter socal security number add:";
               cin>>temp->ssi;
               cout<<"\n enter person to add:";
            cin>>temp->name;
	if((front==NULL) || (back==NULL))
	{
  front=temp;
     back=temp;
    }
	else
	{
	back->next=temp;
	back=temp;
	}
}
//-----------------------------------
void Queue::remove()
{
	Node* curn;
	curn=front;
	if(front==NULL)
	cout<<"\n the stack is empty";
	else
	cout<<'\n'<<front->ssi<<"\t\t\t"<<front->name;

	front=front->next;
	if(front==NULL)

  back=NULL;
	delete curn;
}

//----------------------------------------

void Queue::display()
{
	Node* curn;
	curn=front;
	if(front==NULL)
  cout<<"\nthe stack is empty";
	else
  while(curn != NULL)
  {
 	 cout<<'\n'<<curn->ssi<<"\t\t\t"<<curn->name;
 	 curn=curn->next;
  }
}
//-----------------------------------------------------
void Queue::first()
{
   cout<<"\n The first socal security number"<<"\t person name";
   cout<<"\n"<<front->ssi<<"\t\t\t\t"<<front->name;
}
//-------------------------------------------------------
void Queue::last()
{
	cout<<"\n The Last socal security number"<<"\t person name";
   cout<<"\n"<<back->ssi<<"\t\t\t\t"<<back->name;

}
//--------------------------------------------

void menu()
{
 cout<<"\nmenu";
 cout<<"\n (A)dd";
 cout<<"\n (R)emove";
 cout<<"\n (F)irst";
 cout<<"\n (L)ast";
 cout<<"\n (D)isplay";
 cout<<"\n (Q)uit";
}
//---------------------------------------------------------

void main()
{
  Queue x;
  char choes;
  menu();
  do
  {

   cout<<"\npleas choes from menu:";
   cin>>choes;
   switch(choes)
   {
      case 'a':
      case 'A':
               x.add();
            cout<<"\n***************************";
               break;
      case 'r':
      case 'R':cout<<"\n Remove socal security number"<<"\tRemove person name";
         
            x.remove();
         cout<<"\n***************************";
               break;
       case 'f':
       case 'F':x.first();
                break;
       case 'l':   
       case 'L':x.last();
                cout<<"\n******************************";
                break;
       case 'd':
       case 'D':cout<<"\nsocal security number"<<"\t person name";
             x.display();
          cout<<"\n******************************";
                break;
       case 'q':
       case 'Q':
          cout<<"exit";
             
          cout<<"\n*************************\n";
             exit(0);
                break;
   }

  }while(1);

  getche();
}
:)  :)

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…