[Çözüldü] Önbellekte Şişme

Başlatan erdemakin09, 27 Aralık 2015 - 22:17:58

« önceki - sonraki »

0 Üyeler ve 4 Ziyaretçi konuyu incelemekte.

erdemakin09

Arkadaşlar şöyle kodlarımı tamamen paylaştım. Denedikleri mi söylüyorum buradan. fflush(stdin) denedim olmadı. while((c = getchar()) != '\n' && c != EOF) denedim olmadı. stringleri katar dizilerine çevirdim olmadı. gets() ile aldım olmadı. scanf ile aldım olmadı. getline ile aldim olmadı. cin.ignore cin.clear denedim olmadı. sorunu araştırdım farklı farklı yerlere yazdım. İngilizce sitelere bile konu açtım. Hatta o sitelerden birinde cin kullanırsam sorunsuz çalışacağını söyledi denedim çalışmadı. Yeni değişkenler tanımladım. Sonra onları cin>> ad1; okunan->ad = ad1 şeklinde atamayı denedim ama olmadı. Kafayı yeme noktasına geldim. Günlerdir şuradaki sorunu halletmeye çalışıyorum. Eğer farklı bir çözüm öneriniz varsa lütfen paylaşın. Çok teşekkür ederim.
Not 1: Arkadaşlar kodlar üzerinde çok çok fazla oynama yaptım deneme yaparken. O yüzden kodlarda saçma yazım yanlışları olabilir fark edemediğim olabilir.
Not 2: Sorunu önbellekte bir şişmeden yada enter tuşunu da algılamaya çalışmasından kaynaklı olduğunu düşünüyorum. Fakat sorun başkada olabilir Başlığa aldanmayın.



#include <iostream>
#include <fstream>
#include <stdio.h>
#include <stdlib.h>
#include <string>
using namespace std;
int elemansayisi=0;

typedef struct dEleman{
    string ad, soyad, sehir , eposta, yabancidil, okuladi, turu, bolumu, isdeneyimi, isadresi, ispozisyonu,ehliyet;
    int telefon,dogumyili,baslangictarih,bitistarih,notortalamasi,tecrubesuresi;

    dEleman *prev;
    dEleman *next;
} Liste1;

Liste1 *ilk=NULL, *son = NULL;

int ekle (Liste1 *eklenecek){
    if (ilk != NULL){
        son->next = eklenecek;
        eklenecek = son;
        son = eklenecek;
        son->next = NULL;
    }

    else{
        ilk = eklenecek;
        son = eklenecek;
        ilk->next = NULL;
        ilk->prev = NULL;
    }
    elemansayisi++;
    return 0;

}

Liste1 *klavyeOku(){

    Liste1 *okunan;
    okunan = (Liste1 *) malloc (sizeof(Liste1));

    cout<< "Adinizi Giriniz: ";
    cin>>okunan->ad;

    cout<< "Soyadinizi Giriniz: " ;
    cin>>okunan->soyad;

    cout<< "Yasadiginiz Sehri Giriniz: ";
    cin>>okunan->sehir;

    cout<< "Eposta Adresinizi Giriniz: ";
    cin>> okunan->eposta;

    cout<< "Yabanci Dillerinizi Giriniz: ";
    cin>>okunan->yabancidil;

    cout<< "Okulun Adini Giriniz: ";
    cin>>okunan->okuladi;

    cout<< "Turunu Giriniz: ";
    cin>>okunan->turu ;

    cout<< "Bolumu Giriniz: ";
    cin>>okunan->bolumu;

    cout<< "Not Ortalamasini Giriniz: ";
    cin>>okunan->notortalamasi;

    cout<< "Isdeneyiminizi Giriniz: ";
    cin>> okunan->isdeneyimi;

    cout<< "Isadresinizi Giriniz: ";
    cin>> okunan->isadresi;

    cout<< "Ispozisyonunuzu Giriniz: ";
    cin>> okunan->ispozisyonu;

    cout<< "Baslangic Tarihini Giriniz: ";
    cin>>okunan->baslangictarih;

    cout<< "Bitis Tarihini Giriniz: ";
    cin>>okunan->bitistarih;

    cout<< "Deneyim Suresini Giriniz: ";
    cin>> okunan->tecrubesuresi;

    cout<< "Ehliyet turunuzu Giriniz: ";
    cin>> okunan->ehliyet;

    cout<< "Telefonunuzu Giriniz: ";
    cin>>okunan->telefon;

    cout<< "Dogumyilinizi Giriniz: ";
    cin>> okunan->dogumyili;

    return okunan;

}

int main()
{
    int sayi1,tercih;
    string arananad;
    Liste1 *eklenecek, *ki;
    do {
    cout<< "Eleman Aramak Icin 1 yaziniz."<<endl<< "Is Aramak Icin 2 yaziniz."<<endl;
    cin>>sayi1;
    } while(sayi1<1 || sayi1 >2);

    if (sayi1==1){
        cout<< " LISTELEME YAPMAK ICIN : 1"<<endl;
        cout<< " ARAMA YAPMAK ICIN : 2"<<endl;
        cin>>tercih;
       
   
    }


    if (sayi1==2){
        cout<< " YENI KULLANICI GIRISI : 1"<<endl;
        cout<< " KULLANICI BILGILERINIZI GORUNTULEMEK : 2"<<endl;
        cout<< " BILGILERINIZI SILMEK : 3"<<endl;
        cout<< " BILGILERINIZI GUNCELLEMEK : 4"<<endl;
        cin>>tercih;

        switch (tercih)
        {
        case 1:
            eklenecek = klavyeOku ();
            ekle(eklenecek);
        }
    }


Her Can Bir Gün Ölümü Tadacaktır!

ShangriLa

liste veritipini de atsaydin sorunu anlayabilirdik
Ubuntu Mate Trusty

erdemakin09

Alıntı yapılan: ShangriLa - 27 Aralık 2015 - 23:15:14
liste veritipini de atsaydin sorunu anlayabilirdik


typedef struct dEleman{
    string ad, soyad, sehir, eposta, yabancidil, okuladi, turu, bolumu, isdeneyimi, isadresi, ispozisyonu,ehliyet;
    int telefon,dogumyili,baslangictarih,bitistarih,notortalamasi,tecrubesuresi;

    dEleman *prev;
    dEleman *next;
} Liste1;


şöle attim struct yapımı istedin herhalde dogru anladım dimi
Her Can Bir Gün Ölümü Tadacaktır!

erdemakin09

Alıntı yapılan: ShangriLa - 27 Aralık 2015 - 23:15:14
liste veritipini de atsaydin sorunu anlayabilirdik

Kodları paylaştım arkadaşım tekrar bir bakarsan çok sevinirim.
Her Can Bir Gün Ölümü Tadacaktır!

ShangriLa

Alıntı yapılan: erdemakin09 - 01 Ocak 2016 - 19:30:59
Kodları paylaştım arkadaşım tekrar bir bakarsan çok sevinirim.

Kusura bakmayin bu basligi unuttum. Sorun su satirda:

    okunan = (Liste1 *) malloc (sizeof(Liste1));

Sen malloc ile sadece Liste1 boyutunda bellek ayiriyorsun. Bu struct icerisinde stringler hic bir sekilde initialize edilmiyor. malloc yerine new kullanirsan bir sıkıntı kalmaz, yani:

    okunan = new Liste1;

Bu arada bu tur pointer islemleri artik modern C++'da yer almiyor.
Ubuntu Mate Trusty

erdemakin09

#5
Hemen deneyip senide bilgilendiricem. Teşekkür ederim cevap için. İnan okulumuzda bizi ne kadar saçma şeylerle ugraştırıyorlar bunlar hava civa hala her sene graphics.h projesi yaptırıyorlar
Her Can Bir Gün Ölümü Tadacaktır!

Sh4oTT

@erdemakin09 ne okuyorsunuz?

erdemakin09

#7
Alıntı yapılan: ShaoDownLiNuP - 01 Ocak 2016 - 20:46:50
@erdemakin09 ne okuyorsunuz?
Bilgisayar mühendisliği


Alıntı yapılan: ShangriLa - 01 Ocak 2016 - 20:41:41
Alıntı yapılan: erdemakin09 - 01 Ocak 2016 - 19:30:59
Kodları paylaştım arkadaşım tekrar bir bakarsan çok sevinirim.

Oldu galiba ya çok teşekkür ederim.

Kusura bakmayin bu basligi unuttum. Sorun su satirda:

    okunan = (Liste1 *) malloc (sizeof(Liste1));

Sen malloc ile sadece Liste1 boyutunda bellek ayiriyorsun. Bu struct icerisinde stringler hic bir sekilde initialize edilmiyor. malloc yerine new kullanirsan bir sıkıntı kalmaz, yani:

    okunan = new Liste1;

Bu arada bu tur pointer islemleri artik modern C++'da yer almiyor.

oldu galiba ya çok teşekkürler
Her Can Bir Gün Ölümü Tadacaktır!