PDA

Tam Sürümünü Görmek İçin : beyler odev le alakali yarin aksam 5 son


cefurkan
03/12/2006, 19:12
evet bir kac gundur urasiyorum ama basaramadim

su anda sizden yardim istedigim konu

bağli liste yapisi olusturucam bir tane ve bu listeye dugumler eklicem

ekledigim dugum struct inin icinde

next
next_prime
ve veri var

su anda ben ilk once listeyi olusturmak istiyorum odev asamalari var ama su anda sadece listede yardim etseniz yeter

bu dugumlerdeki next leri sirali olarak listeye eklemek istiyorum

iste yazdigim kod ama derlemede hata cikmasada calistirirken hata cikiyor:aglama::aglama::aglama:

girdileri komut satirindan aliyoruz

isterseniz odevin hepsini koyarim ama kendim yapmak istiyorum :)


#include <stdio.h>
#include <stdlib.h>
#include <math.h>

typedef struct dugum {
int veri;
struct dugum *next_prime;
struct dugum *next;
} dugum_tipi;


typedef struct liste {
struct dugum *liste_ptr;
struct dugum *asal_ptr;
} liste_tipi;
dugum_tipi *listeye_ekle (int,dugum_tipi*);

dugum_tipi *dugum_al(int );

int main(int argc,char *argv[]){
int i;
liste_tipi *listeptrr;
dugum_tipi liste,*t;
listeptrr=NULL;



for( i=1; i<argc; i++){

int deger=atoi(argv[i]);
listeye_ekle(deger,&liste);



}

t=&liste;
for( i=1; i<argc; i++)
printf("%d\n",t->veri); // bu kisim listemin olusup olusmadigini test etmek icin ama paso -1 yazdiriyor:(



return 0;
}

dugum_tipi *dugum_al(int deger){

dugum_tipi *yenidugum;

yenidugum=(dugum_tipi *)malloc(sizeof(dugum_tipi));

if(yenidugum==NULL)
printf("bellek alinamadi\n");

else
{
yenidugum->veri=deger;
yenidugum->next=NULL;
yenidugum->next_prime=NULL;

}
return yenidugum;
}




dugum_tipi *listeye_ekle(int deger,dugum_tipi *liste_ptr)
{

dugum_tipi *p,*t,*bas;

p=dugum_al(deger);
if(p==NULL)
printf("");
else
{
if(liste_ptr==NULL)
liste_ptr=p;
else
{
t=liste_ptr;
bas=t;
if(deger>t->veri)
{
while(t->next!=NULL && deger>t->veri)

t=t->next;
p->next=t->next;
t->next=p;
liste_ptr=bas;
}
else
{
p->next=t;
liste_ptr=p;
}
} }
return liste_ptr;



}


jnothing
03/12/2006, 19:33
abi o kısımda hep -1 gelmesi gayet doğal, sen next e aktarmıyorsunki

dugum=lptr->liste_ptr;
while(dugum->next!=NULL)
dugum=dugum->next;


gibi birşey yapsan diyecem. Eğer alakasız birşey demişsem kodunun geri kalanını okumadığımdandır.
Aynı ödevi ben de yapıyorumda, kendimden örnek verdim :)

cefurkan
03/12/2006, 19:41
valla yazdigindan pek bise anlayamadim :D

benim koddan ornek versen daha ii olur

jnothing
03/12/2006, 19:41
hani sayıların en sonunda -1 giriliyor ya, sen onu da alıp listeye ekliyorsun sanırım, en küçük sayı olacağından en başa geçiyor, sen de paso ilk sayıyı yazdır dediğinden (next e geçmediğinden) -1 veriyor hep gibi gibi

cefurkan
03/12/2006, 19:44
daha ben -1 ile felan urasmiyomki

bende orda -1 de yazmiyom

sen az koda baksana :D

mesela 123 234 45 234 girsem ekrana

-1
-1
-1
-1 cikiyor

jnothing
03/12/2006, 19:44
t=&liste;
for( i=1; i<argc; i++)
printf("%d\n",t->veri);

burada t->veri her zaman listedeki ilk sayı olacak; yani -1

jnothing
03/12/2006, 19:45
ya o zaman ben koda iyice bakayım, ondan sonra atıp tutayım, böyle girintisiz de anlamıyorum. çıkarırsam birşey yazarım

cefurkan
03/12/2006, 19:46
yaw ben oraya -1 eklemiyorum ama hep -1 yazdiyior


aa dur bakim aklima bise geldi :D

cefurkan
03/12/2006, 19:49
yok ya kodda hata var pff :(

cefurkan
03/12/2006, 19:51
for( i=1; i<argc; i++) {
printf("%d\n",t->veri); // bu kisim listemin olusup olusmadigini test etmek icin ama paso -1 yazdiriyor:(
t=t->next; }


bole kurunca dongu mesela 1 2 3 4 9 8 7 6 5 girince

-1
795112289
5
6
7
8
9
0
0
diye cikti uretiyor

jnothing
03/12/2006, 20:12
abi ben senin kodu çözemedim.
ilk olarak şunu bana anlatsana, listeye_ekle diye bir fonksiyonda neden veri ve düğüm girişi yapıyoruz.
Mantığım diyorki, bir listeye bir veri ekleyeceksen bana veriyi ve hangi listeye ekleyeceğini söylemen lazım.


void liste_ekle(dugum_tipi * dugum, liste_tipi * lptr)

benim ekleme fonksiyonum böyle,
lptr->liste_ptr boşsa lptr->liste_ptr=dugum

değilse kendinden büyük olan ilk düğümden bir önceye yerleştir

anlayabildiğim kadarını aktarabildiysem bile çözüme ulaştığımızı sanmıyorum, kolay gelsin

cefurkan
03/12/2006, 20:20
harbi ya ben zor yoldan kastiriyorum

senin dedigin mantikla denicem saol

cefurkan
04/12/2006, 12:20
ya kafayi yiyecem hala acces violation verip duruyor

jnothing
05/12/2006, 09:59
naaptın abi en son?

cefurkan
05/12/2006, 13:11
yaw hatam ta en bastan oldugu icin saf saf urasip duruyordum su an itibari ile hatamin ana kismini cozdum cok basit ama neden se kimse goremedi :D



nese hata su
ben

liste_tipi * liste ;

atiyorum bunu tanimladim
sonra bu liste yi direk kullandim
ama buna b ellek almamisim
hatami sole cozdum


liste_tipi listee;
liste_tipi *liste=&listee;



:)

bunu yapinca hatanin ana kismi cozuldu artik gerisi kolay aksama bitircem insallah

acehreli
05/12/2006, 18:57
cefurkan, birden fazla konu acinca isin ucu kaciyor degil mi. Ben o hatayi oteki konuda gostermistim. :)

Ali

MEHMET
06/12/2006, 08:03
naaptın abi en son?
Bende Merak ettim ne oldu ödev. Halledebildin mi?

cefurkan
06/12/2006, 09:36
az kaldi liste olusturdum siralida ekliyor ama ilk girdigim veriyi hep en sona ekliyor o problem var

asal sayilari ve dosya yazdirmayi da bu gun yapcam insallah

en son da ilk girdigim veriyi en sona ekleme problemini halletcem insallah

jnothing
29/12/2006, 19:44
az kaldi liste olusturdum siralida ekliyor ama ilk girdigim veriyi hep en sona ekliyor o problem var

asal sayilari ve dosya yazdirmayi da bu gun yapcam insallah

en son da ilk girdigim veriyi en sona ekleme problemini halletcem insallah

70 almışım abi ben