PDA

View Full Version : نا مفهوم بودن خطا



majidta
یک شنبه 20 اردیبهشت 1388, 16:24 عصر
خواهش میکنم بگید خطای زیر یعنی چی؟


این برنامشه و خطاهاشم زیرشه
پیشاپیش ممنون:خجالت:




#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct info{
long int stno;
char name [15];
char fname[15];
float ave;};
struct kz{
struct info f;
struct kz *link;};
typedef struct kz node;
void peyma (node *start);
void search(node *start,long int stnum);
void own_del(node **start,long int stnum);
void ago_del(node **start,long int stnum);
void first_del(node **start);
void next_del(node *start,long int stnum);
void last_del(node **start);
void first_add(node **start);
void last_add(node **start);
void ago_add(node **start,long int stnum);
void next_add(node **start,long int stnum);
void sort (node *p,int n);
void main (){
long int stnum;
scanf("%ld",&stnum);
int i,n,k;
node *p,*q,*start;
printf("enter n");
scanf("%d",&n);
start=p=(node*)malloc(sizeof(node));
printf("enter stno \n name \n fname \n ave");
scanf("%ld%s%s%f",&p->f.stno,p->f.name,p->f.fname,&p->f.ave);
for(i=1;i<n;i++){
q=(node*)malloc(sizeof(node));
printf("enter stno \n name \n fname \n ave");
scanf("%ld%s%s%f",&q->f.stno,q->f.name,q->f.fname,&q->f.ave);
p->link=q;
p=q;}
q->link='\0';
printf("for peyma enter k=1 \n");
printf("for search enter k=2 \n");
printf("for own_del enter k=3 \n");
printf("for ago_del enter k=4 \n");
printf("for first_del enter k=5 \n");
printf("for next_del enter k=6 \n");
printf("for last_del enter k=7 \n");
printf("for last_add enter k=8 \n");
printf("for ago_add enter k=9 \n");
printf("for next_add enter k=10 \n");
printf("for sort enter k=11 \n");
printf("for exit enter k=12 \n");
printf("k=");
scanf("%d",&k);
switch(k){
case 1:peyma(start);break;
case 2:search(start,stnum);break;
case 3:own_del(*start,stnum);break;
case 4:ago_del(*start,stnum);break;
case 5:first_del(start,stnum);break;
case 6:next_del(start,stnum);break;
case 7:last_del(*start);break;
case 8:last_add(*start);break;
case 9:ago_add(*start,stnum);break;
case 10:next_add(*start,stnum);break;
case 11:sort(p,n);break;
case 12:exit(0);break;}}
void peyma(node *start){
node *p;
p=start;
while(p){
printf("%ld,%s,%s,%f",p->f.stno,p->f.name,p->f.fname,p->f.ave);
p=p->link;}}
void search(node *start,long int stnum){
node *p;
p=start;
while(p){
if(p->f.stno!=stnum)p=p->link;
else break;
printf("%ld,%s,%s,%f",p->f.stno,p->f.name,p->f.fname,p->f.ave);}}
void own_del(node **start,long int stnum){
node *p,*q;
p=*start;
while(p){
if(p->f.stno!=stnum)p=p->link;
else break;
q=p;}
if(p==q){*start=p->link; return;}
while(p->link!=q)p=p->link;
p->link=q->link;
}
void ago_del(node **start,long int stnum){
node *p,*q;
p=*start;
if(p==q)return;
while(p){
if(p->f.stno!=stnum)p=p->link;
else break;
q=p;}
if(p->link=q){*start=q;return;}
while(p->link->link!=q)p=p->link;
p->link=q;}
void next_del(node *start,long int stnum){
node *p,*q;
p=start;
while(p){
if(p->f.stno!=stnum)p=p->link;
else break;
q=p;}
if(q->link!='\0')
q->link=q->link->link;}
void first_del(node **start){
if(*start!='\0')*start=(*start)->link;}
void last_del(node **start){
node *p;
p=*start;
if(*start!='\0'){if(p->link='\0'){*start='\0';return;}}
while(p->link->link)p=p->link;
p->link='\0';}
void first_add(node **start){
node *r;
r=(node*)malloc(sizeof(node));
scanf("%ld%s%s%f",&r->f.stno,r->f.name,r->f.fname,&r->f.ave);
r->link=*start;
*start=r;}
void last_add(node **start){
node *r,*q,*p;
r=(node*)malloc(sizeof(node));
scanf("%ld%s%s%f",&r->f.stno,r->f.name,r->f.fname,&r->f.ave);
p->link='\0';
if(*start='\0'){*start=p;return;}
q=*start;
while(q->link!='\0')q=q->link;
q->link=p;}
void ago_add(node **start,long int stnum){
node *p,*q,*r;
r=(node*)malloc(sizeof(node));
scanf("%ld%s%s%f",&r->f.stno,r->f.name,r->f.fname,&r->f.ave);
p=*start;
while(p){
if(p->f.stno!=stnum)p=p->link;
else break;
q=p;}
if(*start==q){r->link=q;*start=r;return;}
p->link=r;
r->link=q;}
void next_add(node **start,long int stnum){
node *r,*p,*q;
r=(node*)malloc(sizeof(node));
scanf("%ld%s%s%f",&r->f.stno,r->f.name,r->f.fname,&r->f.ave);
p=*start;
while(p){
if(p->f.stno!=stnum)p=p->link;
else break;
q=p;}
r->link=q->link;
q->link=r;}
void sort(node *p,int n){
int i;
node *start;
struct info temp;
for(i=0;i<n;i++){
start=p;
while(start->link!='\0'){
if(start->f.stno>start->link->f.stno)
temp=start->f;
start->f=start->link->f;
start->link->f=temp;}
start=start->link;}}









اینم خطاهش

--------------------Configuration: Cpp1 - Win32 Debug--------------------
Compiling...
Cpp1.cpp
J:\313\Cpp1.cpp(59) : error C2664: 'own_del' : cannot convert parameter 1 from 'struct kz' to 'struct kz ** '
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
J:\313\Cpp1.cpp(60) : error C2664: 'ago_del' : cannot convert parameter 1 from 'struct kz' to 'struct kz ** '
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
J:\313\Cpp1.cpp(61) : error C2660: 'first_del' : function does not take 2 parameters
J:\313\Cpp1.cpp(63) : error C2664: 'last_del' : cannot convert parameter 1 from 'struct kz' to 'struct kz ** '
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
J:\313\Cpp1.cpp(64) : error C2664: 'last_add' : cannot convert parameter 1 from 'struct kz' to 'struct kz ** '
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
J:\313\Cpp1.cpp(65) : error C2664: 'ago_add' : cannot convert parameter 1 from 'struct kz' to 'struct kz ** '
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
J:\313\Cpp1.cpp(66) : error C2664: 'next_add' : cannot convert parameter 1 from 'struct kz' to 'struct kz ** '
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
Error executing cl.exe.

Cpp1.obj - 7 error(s), 0 warning(s)

tdkhakpur
دوشنبه 21 اردیبهشت 1388, 01:32 صبح
سلام:
دوست گرامی این برنامه مریوط به طرز استفاده از لسیتهای پیوندی هست.
و کلا اشتباهاش مربوط به نحوه استفاده از توابع و ارسال پارامتر ها به اون هست.
ولی میتونم بگم برنامه اصلا خوانا نبوده و از لیستهای پیوندی بصورت غیر مفید و نمیگم
اشتباه بلکه خواننده رو سردرگم میکنه استفاده شده.
اشتباهات این برنامه قابل اصلاح هست ولی نمیتونم درستی نتیجه اش رو بهتون قول بدم.
بهتره اگه خودتون نوشتید با بررسی دقیق و خیلی ساده اصلاحش کنید.
شاید بهترین راه همین باشه .
موفق باشید.