C programming

Salam C də belə 1 problemim var yenə bəzi şeyləri örgənmək üçün etdiyim koddu ona görə dəxilsiz ola bilər

#include <stdlib.h>

struct entry{
    int value;
    struct entry * next;
};

void removeEntry(struct entry head,struct entry * removeEntry){
    struct entry * previous;
    findPrevious(head,removeEntry);

    previous->next = previous->next->next;


}
struct entry * findPrevious(struct entry head, struct entry * entry)

int main(){

    void insertEntry(struct entry * newEntry,
                                struct entry * previous);

    void removeEntry(struct entry head, struct entry * removeEntry);
    void printList(struct entry head);
    struct entry * findPrevious(struct entry head, struct entry * entry);

    struct entry n, n1, n2, n3, n4, n2_5;

    n2_5.value = 500;

    n.next = &n1;

    n1.value = 100;
    n1.next = &n2;

    n2.value = 200;
    n2.next = &n3;

    n3.value = 200;
    n3.next = &n4;

    n4.value = 400;
    n4.next = (struct entry *)0;
    removeEntry(n,&n2);
   // printf("%p\n",findPrevious(n,&n3));
    //printf("%p\n",&n1);
   // printf("%p\n",&n2);

    printList(n);


    printf("------------------\n");

    printList(n);

    return 0;
}

findPrevious kodunu tam kopyalamadım bu kodda findPrevious metodunu remove metodunda çağıranda conflict ing types for deyə xəta alıram value səhf pass etdiyim üçündü bilirəm amma necə pass edəcəm onu bilmirəm


Yadda saxlama
Kateqoriya: Sual . . Qısa keçid.

Verilmiş cavablar və yazılan şərhlər (6 cavab var)

(08:34, 14/12/2016 ) #66348

Imkan varsa progamən tam mətnin daxil edərdiniz. hansı kompilyatorla kompilyasiya edirsiniz? Belə tiplərdə konflikt yoxdur.

Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

(19:24, 14/12/2016 ) #66362

Code Blocks isdifadə edirəm

struct entry * findPrevious(struct entry head, struct entry * entry){
    struct entry * listPtr = head.next;
    struct entry * previous = (struct entry *)0;
    while(listPtr != (struct entry *)0){
        if(listPtr  == entry)
            return previous;
        else
            previous  = listPtr;

        listPtr = listPtr->next;

    }
    return previous;
}

buda findPrevious funksiyyası

Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

(22:17, 14/12/2016 ) #66371

Day keçib 1 sualda verim oxuduğum kitabda #define NULL 0 yazıb linked listdeki listPtrn ı listPtr = NULL kimi yazmaq olar deyir yəni listPtr = 0 etməyə bərabər deyilmi bu ? onda adi vəziyyətdə niyə (struct entry *) 0 isdifadə edirik ümumiyyətlə (struct entry *) 0 tam izah olunmmur kitabda nə mənaya gəlir tam olarag ? 0 ı struct entry ye cast edirik ?

Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

(09:36, 15/12/2016 ) #66382

Hansı kitabı oxuyursan? pointeri -NULL -a mənimsədirsənsə elə ancaq NULL -dan da istifadə etmək lazımdır. Nə 0, nə də onun struct entry * -yə casti. Əslində proqramlaşdırmada qeyri anlaşılan, mücərrəd heçnə yoxdu. Proqramlaşdırmada gördüyünüz hər şeyin arxasında ədədlər dayanır, birmənalı olaraq. bildiyimiz adi tam ədədlər. Sadəcə kompilyator bəzi məqamları özü üçün dəqiqləşdirməkdən ötrü müxtəlif tələblər qoyur. Misal üçün malloc ilə yer ayıranda malloc-dan əvvəl cast etmək lazımdır ki, kompilyator alignment -i, v.s. məsələlərində səhv eləməsin. Bu da optimallıq, təhlükəsizlik üçündür. Belə NULL elə 0 deməkdir, (void *)0 kimi təyin olunub. 0-dan əvvəl cast olunan (void *) kompilyatoru razı salmaq üçündür.

Siz proqram mətnin tam daxil eləmirsiniz. Mətni tam daxil eləmək lazımdır. Səhv başqa yerdə ola bilər.

Burda biraz haşiyə çıxmaq istəyirəm. Kompilyatorlar səhvləri təyin etmək də elə də inkişaf etməyiblər. Ən məşhur kompilyatorlar belə səhvlərin yerin və səbəbin təyin etməkdə çətinlik çəkirlər. Səhvləri müəyyən etmək üçün istifadə olunan ən məşhur panic mode , phrase – level , error productions , global correction error recovery v.s. algoritmlərin heç biri tam şəkildə realizə olunmayıb və tərtibatçının öhdəsinə buraxılıb. Hal-hazırda biz də Əsrin dilinin səhvləri tanınması sisteminin təkmilləşdirilməsi üzəridə çalışmalarımızı davam etdiririrk, daha doğrusu biz də səhvləri tapmaqda biraz çətinlik çəkirik. Sadəcə düz məsələnin üstünə gəldiyimizə görə biraz məlumat verdim.

Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

(13:48, 15/12/2016 ) #66390
#include 

struct entry{
    int value;
    struct entry * next;
};

void insertEntry(struct entry * newEntry,
                                struct entry * previous){
    newEntry->next = previous->next;
    previous->next = newEntry;
}


void removeEntry(struct entry head,struct entry * removeEntry){
    struct entry * previous;
    //findPrevious(head,removeEntry);

    previous->next = previous->next->next;


}

struct entry * findPrevious(struct entry head, struct entry * entry){
    struct entry * listPtr = head.next;
    struct entry * previous = (struct entry *)0;
    while(listPtr != (struct entry *)0){
        if(listPtr  == entry)
            return previous;
        else
            previous  = listPtr;

        listPtr = listPtr->next;

    }
    return previous;
}


void printList(struct entry head){
    struct entry * listPtr = head.next;

    while(listPtr != (struct entry *)0){
        printf("%i\n",listPtr->value);
        listPtr = listPtr -> next;
    }
}

int main(){
   
    void insertEntry(struct entry * newEntry,
                                struct entry * previous);

    void removeEntry(struct entry head, struct entry * removeEntry);
    void printList(struct entry head);
    struct entry * findPrevious(struct entry head, struct entry * entry);

    struct entry n, n1, n2, n3, n4, n2_5;

    n2_5.value = 500;

    n.next = &n1;

    n1.value = 100;
    n1.next = &n2;

    n2.value = 200;
    n2.next = &n3;

    n3.value = 200;
    n3.next = &n4;

    n4.value = 400;
    n4.next = (struct entry *)0;
    //removeEntry(n,&n2);
   // printf("%p\n",findPrevious(n,&n3));
    //printf("%p\n",&n1);
   // printf("%p\n",&n2);

    printList(n);


    printf("------------------\n");

    printList(n);

    return 0;
}

cox sagolun cavabiniz ucun tam olarag kod budu )) kitab kochan programming in C

Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

(15:24, 15/12/2016 ) #66392

findPrevious funksiyası removeEntry funksiyasından əvvəl tərtib olunmalıdı, yada elanı yerləşdirilməlidi.
düzgün variant belədi:

struct entry * findPrevious(struct entry head, struct entry * entry){
    struct entry * listPtr = head.next;
    struct entry * previous = (struct entry *)0;
    while(listPtr != (struct entry *)0){
        if(listPtr  == entry)
            return previous;
        else
            previous  = listPtr;

        listPtr = listPtr->next;

    }
    return previous;
}

void removeEntry(struct entry head,struct entry * removeEntry){
    struct entry * previous;
    findPrevious(head,removeEntry);

    previous->next = previous->next->next;


}

ya da bu şəkildə:

struct entry * findPrevious(struct entry head, struct entry * entry);

void removeEntry(struct entry head,struct entry * removeEntry){
    struct entry * previous;
    findPrevious(head,removeEntry);

    previous->next = previous->next->next;


}

struct entry * findPrevious(struct entry head, struct entry * entry){
    struct entry * listPtr = head.next;
    struct entry * previous = (struct entry *)0;
    while(listPtr != (struct entry *)0){
        if(listPtr  == entry)
            return previous;
        else
            previous  = listPtr;

        listPtr = listPtr->next;

    }
    return previous;
}

C tələb edir ki, hər bir müraciət olunan funksiya və ya dəyişən müraciət nöqtəsindən əvvəl elan olunsun.

Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

Bu suala aid öz sualım var:
Sual verin
Bu suala cavab vermək istəyirəm:
Cavab verin

Cavab verin


Cavab yazmaq üçün lütfən sağ sütundan və ya buradan hesaba daxil olun.

Üzvlər üçün giriş

Qeydiyyat

Elan qutusu

Son cavablar və şərhlər

Software Developer cavab verdi - Payoneer kartdan pul çıxartdıqda vergi (18 saat əvvəl)

Software Developer cavab verdi - Wise vasitəsilə bank kartına pul köçürmə (4 gün əvvəl)

Software Developer cavab verdi - Rus dilindən mətni tərcümə etmək (5 gün əvvəl)

Cənab cavab verdi - Almanca söz bazası yığmaq (8 gün əvvəl)

rdrobert cavab verdi - Mikrofon süngərinə yazı (9 gün əvvəl)

rdrobert cavab verdi - Yerli virtual olaraq dost tapmaq platforması (9 gün əvvəl)

rdrobert cavab verdi - Almanca söz bazası yığmaq (9 gün əvvəl)

rdrobert cavab verdi - Playstation 4 almaq, Playsation klub açmaq (9 gün əvvəl)

rdrobert cavab verdi - Proqramistin ixtsasi hansidir? (9 gün əvvəl)

Software Developer cavab verdi - Azercell Kabinetim aplikasiyasında İstəSən tarifi haqqında (10 gün əvvəl)

Software Developer cavab verdi - Proqramistin ixtsasi hansidir? (10 gün əvvəl)

byshako cavab verdi - Google Azərbaycan nömrələrini qəbul etmir (21 gün əvvəl)

rdrobert cavab verdi - Honeygain, passiv gelir (22 gün əvvəl)

rdrobert cavab verdi - Xaricdən telefon getirmek (22 gün əvvəl)

rdrobert cavab verdi - Google Azərbaycan nömrələrini qəbul etmir (22 gün əvvəl)

Software Developer - 615 xal

E. Hacı - 607 xal

Onar Alili - 526 xal

Dilsuz - 448 xal

Cabbarov Sübhan - 434 xal

Maqa - 346 xal

Ruslan Butdayev - 328 xal

Namiq Bəndəli - 297 xal

U.Tarlan - 244 xal

Meherremoff - 234 xal

Sistemə daxil olmuş 23236 sualdan 92%-dən çoxu cavablandırılmışdır.

Proyekt haqqında

E-Haci.net istehsalı. © 2010-2024