انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید


توزیع گنو/لینوکس اوبونتو ۲۰ ساله شد 🎉

نویسنده موضوع: رفع مشکلات یک کد غیر استاندارد ساختمان داده  (دفعات بازدید: 1373 بار)

0 کاربر و 4 مهمان درحال مشاهده موضوع.

آفلاین mojtaba_xyz

  • Newbie
  • *
  • ارسال: 4
  • جنسیت : پسر
سلام به همه دوستان
راستش این ترم ساختمان داده دارم همراه با استادی که ویندوزه اش اکس پی اه و کامپایبرش برلند و توربو سی پلاس ](*,) ](*,) ](*,)
البته تا این جلسه همه چی خوب و من کدهای که می گفت را با اضافه کردن int main و return 0 تو ++g کامپایل می کردم
تا این جلسه که کد زیر را بهمون داد و من هرچه تلاش کردم نفهمیدم مشکل اش چیه، البته با بکمی تحقیق فهمیدم که لینوکس conio.h  نداره :'( :'( با اینکه کمکی استایلش را خراب می کنه ولی اگه بیخیال اون بشیم. به همه توابع ای که اولش str  و gets این ارور را می ده
invalid conversion from 'unsigned char*' to 'char*' [-fpermissive]|می دونم کد طولانی اه ولی نمی دونم چرا یک حسی بهم میگه مثل و int main با یک سری تغیرات جزئی همه چی درست می شه
ویرایش:
در کنار اون ارور این ارور هم می ده
initializing argument 1 of 'char* strcpy(char*, const char*)سویچ -fpermissive هم امتحان کردم جواب نداد
#include <stdio.h>
  #include <conio.h>
  #include <string.h>
  #include <process.h>
  #include <stdlib.h>

  #define NULL 0
  #define FALSE 0
  #define TRUE 1

  typedef struct n{
  unsigned char value[20];
               n *rptr;
} node;
  int main(void)
  {
    node *create_primary_list(void);
    node *addfirst(node *lst,unsigned char *);
    unsigned char input[20];
    node *list=NULL,*t=NULL;
    unsigned char chk_exit=FALSE;
    clrscr();
    if((list=create_primary_list())==NULL)
    {
    printf("Error creating primary linked list\a\n\0");
    exit(1);
    }
    do
    {
    strcpy(input,"\0");
    printf("Enter Text TO Add To First Of List : \0");
    gets(input);
    if(strcmpi(input,"Quit\0")!=0)
    {
    if((list=addfirst(list,input))==NULL)
    {
    printf("Error Ading To Primary Linked List\a\n\0");
    exit(1);
    }
    }
    else
     chk_exit=TRUE;
     }while(!chk_exit);
     t=list;
     clrscr();
     while(t!=NULL)
     {
     printf("%s\n\0",t->value);
     t=t->rptr;
     }
     return 0;
     }
     node *create_primary_list(void)
     {
     unsigned char str_ar[10][20]={"Windows\0",
      "Windows 95\0",
                               "Turobo Pascal 6\0",
                               "Borland C++\0",
                               "Visual C++\0",
                               "MicoSoft Word\0",
                               "Visual Basic\0",
                               "Delphi\0",
                               "Borland Pascal\0",
                               "Borland Delphi\0"
                            };
     node *lst=NULL,*cur=NULL,*t=NULL;
     unsigned char i;
     for(i=0;i<10;i++)
      if(lst==NULL)
      {
       if((cur= new node)==NULL)
        return(NULL);
       lst=cur;
       cur->rptr=NULL;
       strcpy(cur->value,str_ar[i]);
       }
       else
       {
       if((t=new node)==NULL)
         return(NULL);
         t->rptr=NULL;
         cur->rptr=t;
         cur=t;
         strcpy(cur->value,str_ar[i]);
         }
         return(lst);
         }
         node *addfirst(node *lst,unsigned char *s)
         {
         node *t=NULL;
         if(lst==NULL)
         {
         if((lst=new node)==NULL)
          return(NULL);
          lst->rptr=NULL;
          strcpy(lst->value,s);
          }
          else
          {
          if((t=new node)==NULL)
          return(NULL);
          t->rptr=lst;
          strcpy(t->value,s);
          lst=t;
          }
          return(lst);

  }
« آخرین ویرایش: 06 اردیبهشت 1395، 09:54 ب‌ظ توسط mojtaba_xyz »

آفلاین دانیال بهزادی

  • ناظر انجمن
  • *
  • ارسال: 19719
  • جنسیت : پسر
  • Urahara Kiesuke
    • وبلاگ
پاسخ : رفع مشکلات یک کد غیر استاندارد ساختمان داده
« پاسخ #1 : 06 اردیبهشت 1395، 09:53 ب‌ظ »
توی
typedef struct n{
  unsigned char value[20];
               n *rptr;
} node;
داری یه ساختار می‌سازی و توش از خودش استفاده می‌کنی؟
« آخرین ویرایش: 06 اردیبهشت 1395، 09:55 ب‌ظ توسط دانیال بهزادی »
اگه این ارسال بهت کمک کرد، دنبال دکمهٔ تشکر نگرد. به جاش تو هم به جامعهٔ آزادت کمک کن

آفلاین mojtaba_xyz

  • Newbie
  • *
  • ارسال: 4
  • جنسیت : پسر
پاسخ : رفع مشکلات یک کد غیر استاندارد ساختمان داده
« پاسخ #2 : 06 اردیبهشت 1395، 09:58 ب‌ظ »
آره دیگه یک لیست پیونده ای، اون قراره به گره بعدی اشاره کنه
 به اون خط ارور نمی ده به اون خطهای که از توابع رشته ای استفاده می کنم ارور می ده مثل gets  و strcpy
« آخرین ویرایش: 06 اردیبهشت 1395، 10:10 ب‌ظ توسط mojtaba_xyz »

آفلاین دانیال بهزادی

  • ناظر انجمن
  • *
  • ارسال: 19719
  • جنسیت : پسر
  • Urahara Kiesuke
    • وبلاگ
پاسخ : رفع مشکلات یک کد غیر استاندارد ساختمان داده
« پاسخ #3 : 07 اردیبهشت 1395، 03:18 ب‌ظ »
اوه. داری فهرست پیوندی می‌سازی! تازه فهمیدم. خب وقتی سی++ است، چرا از کلاس و مزایای شی‌گرایی استفاده نمی‌کنی؟ این روشی که استفاده کردی خیلی عجیبه.

#include<iostream>
#include<cstdio>
using namespace std;
class node{
        node* next;
        char data;
    public:
        node(char x){
            data=x;
            next=NULL;
        }
        node(){
            data='~';
            next=NULL;
        }
        void set_next_node(node *n){
            this->next=n;
        }
        node* get_next_node(){
            return next;
        }
        char get_data(){
            return data;
        }
        void set_data(char x){
            data=x;
        }
};
class Linked_List{
        node *Head;
    public:
        Linked_List(char v){
            Head= new node(v);
        }
        Linked_List(){
            Head= new node();
        }
        void append(char v){
            node *Cur;
            for(Cur=Head;Cur->get_next_node()!=NULL;Cur=Cur->get_next_node()){
                ;
            }
            Cur->set_next_node(new node(v));
            cout<<"appending"<<v<<"to"<<Head->get_data()<<endl;
        }
        node* get_Head(){
            return Head;
        }
        void clear(){
            Head=NULL;
        }
        void show(){
            node *Cur;
            for(Cur=Head;Cur!=NULL;Cur=Cur->get_next_node()){
                cout<<Cur->get_data()<<" ";
            }
        }
};
اگه این ارسال بهت کمک کرد، دنبال دکمهٔ تشکر نگرد. به جاش تو هم به جامعهٔ آزادت کمک کن

آفلاین mojtaba_xyz

  • Newbie
  • *
  • ارسال: 4
  • جنسیت : پسر
پاسخ : رفع مشکلات یک کد غیر استاندارد ساختمان داده
« پاسخ #4 : 07 اردیبهشت 1395، 04:53 ب‌ظ »
اوه. داری فهرست پیوندی می‌سازی! تازه فهمیدم. خب وقتی سی++ است، چرا از کلاس و مزایای شی‌گرایی استفاده نمی‌کنی؟ این روشی که استفاده کردی خیلی عجیبه.

#include<iostream>
#include<cstdio>
using namespace std;
class node{
        node* next;
        char data;
    public:
        node(char x){
            data=x;
            next=NULL;
        }
        node(){
            data='~';
            next=NULL;
        }
        void set_next_node(node *n){
            this->next=n;
        }
        node* get_next_node(){
            return next;
        }
        char get_data(){
            return data;
        }
        void set_data(char x){
            data=x;
        }
};
class Linked_List{
        node *Head;
    public:
        Linked_List(char v){
            Head= new node(v);
        }
        Linked_List(){
            Head= new node();
        }
        void append(char v){
            node *Cur;
            for(Cur=Head;Cur->get_next_node()!=NULL;Cur=Cur->get_next_node()){
                ;
            }
            Cur->set_next_node(new node(v));
            cout<<"appending"<<v<<"to"<<Head->get_data()<<endl;
        }
        node* get_Head(){
            return Head;
        }
        void clear(){
            Head=NULL;
        }
        void show(){
            node *Cur;
            for(Cur=Head;Cur!=NULL;Cur=Cur->get_next_node()){
                cout<<Cur->get_data()<<" ";
            }
        }
};

من استفاده نمی کنم استادمون استفاده می کنه :'(
ولی ایول چه آسون و جالب  \\:D/
راستی منبع خوبی برای ساختمان داده می شناسین؟؟ ترجییحا انگلیسی و کامل باشه؟؟ :o