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

خطا لم اجد له حل

بدأه الباحث عنكم في 14 فبراير 2010 · 4 رد · 846 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

يا جماعة برنامج بسيط لكن لما اعطي تنفيذ بيطلع من البرنامج

ارجو المساعدة

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

typedef struct node *ptr;

typedef struct node2 *ptr2;

struct node

{

char part[20];

ptr next;

};

struct node2

{

char power[20];

char num[20];

ptr2 next;

};

typedef ptr list;

typedef ptr position;

typedef ptr2 list2;

typedef ptr2 position2;

int main()

{

FILE *in=fopen("data.txt","r");

char l[50];

fscanf(in,"%s",l);

char *tokptr,*tokptr2;

tokptr=strtok(l,"+");

list parts=(list) malloc(sizeof( struct node));

position temp =(position) malloc(sizeof(struct node));

temp=parts;

while (tokptr != NULL)

{

position name =(position) malloc(sizeof(struct node));

strcpy(name->part,tokptr);

printf(" \n %s",name->part);

temp->next=name;

temp=name;

tokptr=strtok(NULL,"+");

}

position2 temp1=(position2)malloc(sizeof(struct node2));

position temp2=(position)malloc(sizeof(struct node));

list2 p=(list2)malloc(sizeof(struct node2));

temp1=p;

temp2=parts;

while(temp2->next != NULL)

{

tokptr2=strtok(temp2->next->part,"x^");

position2 fun=(position2) malloc(sizeof(struct node2));

strcpy( fun->num,tokptr2);

printf(" \n %s " ,fun->num );

tokptr2=strtok(NULL,"^");

strcpy( fun->power,tokptr2);

printf(" %s" , fun->power);

temp1->next=fun;

temp1=fun;

temp2=temp2->next;

}

fclose(0);

printf(" \n %s " ,p->next->num);

return 0;

}

#2

ما فهمت سؤالك

وضح:

انا اضع الكود منسّق لعل غيري فهم سؤالك وسيسهّل هذا عليه الاجابة:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct node *ptr;
typedef struct node2 *ptr2;
struct node
{
char part[20];
ptr next;
};
struct node2
{
char power[20];
char num[20];
ptr2 next;
};
typedef ptr list;
typedef ptr position;
typedef ptr2 list2;
typedef ptr2 position2;
int main()
{
FILE *in=fopen("data.txt","r");
char l[50];
fscanf(in,"%s",l);
char *tokptr,*tokptr2;
tokptr=strtok(l,"+");
list parts=(list) malloc(sizeof( struct node));
position temp =(position) malloc(sizeof(struct node));
temp=parts;
while (tokptr != NULL)
{
position name =(position) malloc(sizeof(struct node));
strcpy(name->part,tokptr);
printf(" \n %s",name->part);
temp->next=name;
temp=name;
tokptr=strtok(NULL,"+");
}
position2 temp1=(position2)malloc(sizeof(struct node2));
position temp2=(position)malloc(sizeof(struct node));
list2 p=(list2)malloc(sizeof(struct node2));
temp1=p;
temp2=parts;
while(temp2->next != NULL)
{
tokptr2=strtok(temp2->next->part,"x^");
position2 fun=(position2) malloc(sizeof(struct node2));
strcpy( fun->num,tokptr2);
printf(" \n %s " ,fun->num );
tokptr2=strtok(NULL,"^");
strcpy( fun->power,tokptr2);
printf(" %s" , fun->power);
temp1->next=fun;
temp1=fun;
temp2=temp2->next;
}
fclose(0);
printf(" \n %s " ,p->next->num);
return 0;
}

على كل اذا كان قصدك البرنامج يعمل ولكن ينتهي ولا يبقى على الشاشة لترى النتيجة

ضع دالة استقبال مدخلات قبل النهاية مثلا

getch

#3
إسماعيل ابراهيم كتب:

ما فهمت سؤالك

وضح:

انا اضع الكود منسّق لعل غيري فهم سؤالك وسيسهّل هذا عليه الاجابة:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct node *ptr;
typedef struct node2 *ptr2;
struct node
{
char part[20];
ptr next;
};
struct node2
{
char power[20];
char num[20];
ptr2 next;
};
typedef ptr list;
typedef ptr position;
typedef ptr2 list2;
typedef ptr2 position2;
int main()
{
FILE *in=fopen("data.txt","r");
char l[50];
fscanf(in,"%s",l);
char *tokptr,*tokptr2;
tokptr=strtok(l,"+");
list parts=(list) malloc(sizeof( struct node));
position temp =(position) malloc(sizeof(struct node));
temp=parts;
while (tokptr != NULL)
{
position name =(position) malloc(sizeof(struct node));
strcpy(name->part,tokptr);
printf(" \n %s",name->part);
temp->next=name;
temp=name;
tokptr=strtok(NULL,"+");
}
position2 temp1=(position2)malloc(sizeof(struct node2));
position temp2=(position)malloc(sizeof(struct node));
list2 p=(list2)malloc(sizeof(struct node2));
temp1=p;
temp2=parts;
while(temp2->next != NULL)
{
tokptr2=strtok(temp2->next->part,"x^");
position2 fun=(position2) malloc(sizeof(struct node2));
strcpy( fun->num,tokptr2);
printf(" \n %s " ,fun->num );
tokptr2=strtok(NULL,"^");
strcpy( fun->power,tokptr2);
printf(" %s" , fun->power);
temp1->next=fun;
temp1=fun;
temp2=temp2->next;
}
fclose(0);
printf(" \n %s " ,p->next->num);
return 0;
}

على كل اذا كان قصدك البرنامج يعمل ولكن ينتهي ولا يبقى على الشاشة لترى النتيجة

ضع دالة استقبال مدخلات قبل النهاية مثلا

getch

صحيح

البرنامج بطبق الاشياء الي داخل ال loop وبطبعها

لكن عندما يصل نهاية ال while loop يغلق

ما فهمت الطريقه

شو قصدك ضع دالة استقبال مدخلات قبل النهايه ؟

ممكن انتا تكتبلي ياها داخل البرنامج في المكان المناسب

وعندي كمان مشكله

البرنامج الي انا كاتبتو بقرا بس اقتران واحد وبعمل الشغلات المطلوبه عليه

لكن البرنامج اصلا لازم يقرا عدد كبير من الاقترانات من ملف وكل ما يقرا اقتران يطبق عليه الشغلات الي انا كاتبتها بالبرنامج

لكن انا ما عرفت كيف اعمل loop تقرا تقرا كل الاقترانات

ممكن حد يساعدني في عمل ال loop ?

والمشكله الاخيره انو البرنامج المفروض يقطع كل اقتران على اساس اشارة + او -

انا ما قدرت اعمل التقطيع الا عاساس + لحالها .... كيف بقدر احكيلو يقطع عاساس + او -

#4

يعني ضع مثلا :

scanf("%c",&x);

قبل return 0

وايضا اذا استخدمت ال × فلا تنسى ان تعرفه ;char x

#5

حط الكود ده في الآخر!!

قبل return 0

 
system("pause");

بس مش غريبة شوية انك تعرف تكتب linked list و ماتعرفش حل للمشكلة دي؟؟؟؟؟؟؟؟؟؟؟ :blink: :blink: :blink:

تم تعديل هذه المشاركة بواسطة besten في 10 مارس 2010 في 13:32

قبل ما تسأل جرب تجوجل!!!

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