PDA

View Full Version : ليست پيوندي(راهنمايي)



hobab1987
یک شنبه 24 آبان 1388, 18:13 عصر
سلام
من تازه ليست پيوندي رو شروع كردم و براي تمرين اين كد رو نوشتم كه اشكال داره!
لطفا راهنماييم كنيد:


#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
struct node
{
char firstname[20];
char lastname[20];
int sn;
float ave;
node *next;
};
int main()
{
node *st;
st = NULL ;
while(st!=NULL)
{
st = new node;
cout << "First Name:";
cin >> st -> firstname;
cout << "Last Name:";
cin >> st -> lastname;
cout << "Student Number:";
cin >> st -> sn;
cout << "Average:";
cin >> st -> ave;
st -> next = st;
}
float a;
cout << "Enter one ave:";
cin >> a;
if(a == st -> ave)
{
cout << "First Name:";
cout << st -> firstname;
cout << "Last Name:";
cout << st -> lastname;
cout << "Student Number:";
cout << st -> sn;
cout << "Average:";
cout << st -> ave;
}
getch();
return 0;
}

m.soleimani
یک شنبه 24 آبان 1388, 18:41 عصر
سلام
من تازه ليست پيوندي رو شروع كردم و براي تمرين اين كد رو نوشتم كه اشكال داره!
لطفا راهنماييم كنيد:


#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
struct node
{
char firstname[20];
char lastname[20];
int sn;
float ave;
node *next;
};
int main()
{
node *st;
st = NULL ;
while(st!=NULL)
{
st = new node;
cout << "First Name:";
cin >> st -> firstname;
cout << "Last Name:";
cin >> st -> lastname;
cout << "Student Number:";
cin >> st -> sn;
cout << "Average:";
cin >> st -> ave;
st -> next = st;
}
float a;
cout << "Enter one ave:";
cin >> a;
if(a == st -> ave)
{
cout << "First Name:";
cout << st -> firstname;
cout << "Last Name:";
cout << st -> lastname;
cout << "Student Number:";
cout << st -> sn;
cout << "Average:";
cout << st -> ave;
}
getch();
return 0;
}

دوست عزیز شما ساختار st رو برابر NULL قرار دادی اول تابع main بعد توی if دوم به یکی از یکی از عضوهاش اشاره کردی و خواستی مقایسه کنی و در واقع یه مقدار را با هیچی مقایسه کردی البته الان دسترسی به ide خودم ندارم که این نظرم را تست کنم موفق باشی

m.soleimani
یک شنبه 24 آبان 1388, 18:44 عصر
در ضمن فکر کنم برای این‌که شرط اولتون هم بشه استفاده کرد باید یه مقدار دهی اولیه تو تعریف نمونه ساختار خودتون داشته باشید.

m.soleimani
یک شنبه 24 آبان 1388, 18:52 عصر
و این‌که تو تعریف کدتون باید این‌ها را اضافه کنید البته تو کامپایلری که من استفاده می‌کنم باید به این سبک باشه :

#include <iostream>

using namespace std;

و البته برای تابع getch هم سرفایل
#include <conio.h>

hobab1987
یک شنبه 24 آبان 1388, 19:54 عصر
خوب من براي دريافت مشخصات تا زمان برقراري شرط همان while()
گفتم st رو null كنم كه وقتي اطلاعاتم رو در ليست قرار دادم ليست اخرم null باشد بعد search رو تا زماني كه null نداريم ادامه بده!
اما نميدونم اينو چطوري پياده كنم!!

tdkhakpur
یک شنبه 24 آبان 1388, 20:39 عصر
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
struct node
{
char firstname[20];
char lastname[20];
int sn;
float ave;
node *next;
};
int main()
{
node *st, *first, *tmpt; // اضافه شود
char exitch='N'; // اضافه شود
st = NULL ;
st = first = new node; // اضافه شود
while(exitch!='N') // تغيير
{
cout << "First Name:";
cin >> st -> firstname;
cout << "Last Name:";
cin >> st -> lastname;
cout << "Student Number:";
cin >> st -> sn;
cout << "Average:";
cin >> st -> ave;

tmp = NULL; // اضافه شود
cout << "Continue .. Y/N? "; // اضافه شود
cin>>exitch; // اضافه شود
if( exitch=='Y' ) tmp = new node; // اضافه شود
st -> next = tmp;
st = tmp;
}
float a;
cout << "Enter one ave:";
cin >> a;
st = first;
while(st!=NULL){
if(a == st -> ave)
{
cout << "First Name:";
cout << st -> firstname;
cout << "Last Name:";
cout << st -> lastname;
cout << "Student Number:";
cout << st -> sn;
cout << "Average:";
cout << st -> ave;
}
st = st->Next;
}
getch();
return 0;
}

دستي كد شد. البته خودتان آخر كار تمام حافظه گرفته شده ليست را free كنيد.

hobab1987
یک شنبه 24 آبان 1388, 23:16 عصر
تشكر
اما يه مشكلي كه قبلش بود و هنوز هم اينجا باقي مونده اينه كه وقتي اجراش كردم چاپ كرد كه يك معدل وارد كن در حالي كه كد هاي قبلي برنامه رو ناديده گرفته نميدونم چرا!

--براي if اولي هم اگر اشتباه نكرده باشم {} نذاشته بوديد !!--

tdkhakpur
دوشنبه 25 آبان 1388, 10:57 صبح
البته ما گفتيم خودتان هم كدها رو اصلاح كنيد. بفرماييد اين هم تمام قضيه!!!


struct node
{
char firstname[20];
char lastname[20];
int sn;
float ave;
node *next;
};
int main()
{
node *st, *first, *tmp; // ÇÖÇÝå ÔæÏ
char exitch='Y'; // ÇÖÇÝå ÔæÏ
st = NULL ;
st = first = new node; // ÇÖÇÝå ÔæÏ
while(exitch!='N' && exitch!='n') // ÊÛííÑ
{
cout << "First Name:";
cin >> st -> firstname;
cout << "Last Name:";
cin >> st -> lastname;
cout << "Student Number:";
cin >> st -> sn;
cout << "Average:";
cin >> st -> ave;
tmp = NULL; // ÇÖÇÝå ÔæÏ
cout << "Continue .. Y/N? "; // ÇÖÇÝå ÔæÏ
cin>>exitch; // ÇÖÇÝå ÔæÏ
if( exitch=='Y' || exitch=='y') tmp = new node; // ÇÖÇÝå ÔæÏ
st -> next = tmp;
st = tmp;
}
float a;
cout << "Enter one ave:";
cin >> a;
st = first;
while(st!=NULL){
if(a == st -> ave)
{
cout <<"\n"<<"First Name:";
cout << st -> firstname;
cout <<"\n"<<"Last Name:";
cout << st -> lastname;
cout <<"\n"<<"Student Number:";
cout << st -> sn;
cout <<"\n"<<"Average:";
cout << st -> ave;
}
st = st->next;
}
// free
st = first;
while(st!=NULL){
tmp = st->next;
delete st;
st = tmp;
}
cin >> a;
return 0;
}

hobab1987
دوشنبه 25 آبان 1388, 20:27 عصر
الان اومدم پيغام بزارم كه حل شد كه ديدم ...
بهرحال بازم دستتون درد نكنه.
خيلي بهم كمك كرد راهنماييتون.

hobab1987
دوشنبه 25 آبان 1388, 20:36 عصر
جداي اين برنامه يك سوال داشتم:
اگر ما بياييم گره ي first رو تو ساختمان تعريف كنيم و در توابع مختلف از first استفاده كنيم چه اشكالي داره كه موقع اجرا error ميده كه first رو تعريف نكردي؟
و همچنين ايرادي نداره كه گره temp , p‌رو سراسري قبل از main تعريف كنيم؟
آخه من اين كار رو كردم و first رو در p ريختم!

hobab1987
سه شنبه 26 آبان 1388, 18:34 عصر
لطفا در مورد اين برنامه راهنماييم كنيد:
موقع اجرا توابع 2و3و4 غير فعاله!!


#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
struct node
{
int data;
node *next;
};
node *p, *temp, *first;
int i = 0;
int a;
void remove();
void survey();
void eventi();
void input();
int menu();
int main()
{
while(1)
{
clrscr();
switch(menu())
{
case 1:
input();
break;
case 2:
eventi();
break;
case 3:
survey();
break;
case 4:
remove();
break;
case 5:
exit(1);
return 0;
}
}
}
int menu()
{
int x;
cout<<"1) Input 10 num.\n";
cout<<"2) Event Ingredient.\n";
cout<<"3) List Survey.\n";
cout<<"4) Remove All List.\n";
cout<<"5) Exit.\n\n\n\n";
cout<<"Choice 1-5:";
cin>>x;
return x;
}
void input()
{
p = first = new node;
temp = new node;
temp -> next = NULL;
while( i < 10)
{
cout << "Number "<<i<<":";
cin >> a;
p -> data = a;
if ( first == NULL)
{
first = p;
temp = first;
}
else
{
temp = new node;
p -> next = temp;
p = temp;
}
i++;
}
}
void eventi()
{
p=first;
while (i < 10)
{
if ( p -> data % 2 == 0 )
{
cout << p -> data << " ";
p = p -> next;
}
i++;
}
getch();
}
void survey()
{
p=first;
while ( i < 10)
{
cout << "Show List:";
cout << p -> data << " ";
p = p -> next;
i++;
}
getch();
}
void remove()
{
while(p)
{
p=first;
first=first->next;
first -> next = NULL;
delete p;
}
cout<<"Finish.";
}