Şimdi Ara

C+ da ödev konusu? kullanıcıdan istenen dizi elementi array[x] ?

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir (1 Mobil) - 1 Masaüstü1 Mobil
5 sn
9
Cevap
0
Favori
2.851
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Merhaba arkadaşlar. Gece 24.00' e kadar yetiştirmem gereken bir ödev söz konusu. Kısacası hemen konuya gireyim.
    C' de array kullanarak dizi yaratıcam. Öncelikle kullanıcıya dizinin kaç elemanlı olacağını soracağım. Mesela 5 diyecek.
    Declare edilen array[SIZE] 5 elementli olucak. Ama SIZE önceden define olarak belirli herhangi bir eleman sayısı olduğu için, kullanıcıdan ne alırsam alayım define edilen SIZE 10 o da olabilir. Her şekilde 10 elemanlı olacak. Yani burada kullanıcıya bağlı eleman sayısı ona göre değişen bir dizi (array) yapmak istiyorum. Fikri olan var mı acaba?



    < Bu mesaj bu kişi tarafından değiştirildi saxahan -- 25 Şubat 2010; 17:45:45 >



  • Şöyle ki,

    T olusturArray(int arrayDegeri)
    {
    T[arrayDegeri] = new T[arrayDegeri];
    return T;
    }

    main()
    {
    int userSecim;
    printf("Bir sayi giriniz: ");
    // Sayi girdisi alinir...
    T olusturArray(userSecim);
    }

    Tipi birşey düşünün derim. C bilmiyorum, C++ biliyorum o yüzden printf kullandım, printf veya diğer komutları bilmiyorum çünkü cin,cout streamleri ile çalışırım output, input değerlerinde. T ise ne tür değer istediğine bağlı olarak değişebilecek bir değişken tipi olmalı ( int, float, double, unsigned long vb.vb. )

    Kod yanlış olabilir ama umarım aklında birşeyler oluşturmuştur...
  • quote:

    Orijinalden alıntı: AlperXp

    Şöyle ki,

    T olusturArray(int arrayDegeri)
    {
    T[arrayDegeri] = new T[arrayDegeri];
    return T;
    }

    main()
    {
    int userSecim;
    printf("Bir sayi giriniz: ");
    // Sayi girdisi alinir...
    T olusturArray(userSecim);
    }

    Tipi birşey düşünün derim. C bilmiyorum, C++ biliyorum o yüzden printf kullandım, printf veya diğer komutları bilmiyorum çünkü cin,cout streamleri ile çalışırım output, input değerlerinde. T ise ne tür değer istediğine bağlı olarak değişebilecek bir değişken tipi olmalı ( int, float, double, unsigned long vb.vb. )

    Kod yanlış olabilir ama umarım aklında birşeyler oluşturmuştur...

    Sağolun ama bununla yapamadım.
  • //kütüphaneler

    void main()
    {
    //main icindeki baska şeyler

    int SIZE;

    //printf ile sayıyı kullanıcıdan al
    //scanf ile sayıyı SIZE degiskenine aktar

    //aray turu neyse ona gore tanimla ben int dedim

    int a[SIZE];

    //main icindeki diğer şeyler

    }

    yol gostermesi açısından yardımcı olur sanırım.
    Düzeltme: c ile nerden baksan 5 senedir uğraşmadım yanış yönlendirmemek adına bir değişiklik yaptım.



    < Bu mesaj bu kişi tarafından değiştirildi altugaaa -- 25 Şubat 2010; 18:20:34 >
  • quote:

    Orijinalden alıntı: altugaaa

    //kütüphaneler

    void main()
    {
    //main icindeki baska şeyler

    int SIZE;

    //printf ile sayıyı kullanıcıdan al
    //scanf ile sayıyı SIZE degiskenine aktar

    //aray turu neyse ona gore tanimla ben int dedim

    int a[SIZE];

    //main icindeki diğer şeyler

    }

    yol gostermesi açısından yardımcı olur sanırım.
    Düzeltme: c ile nerden baksan 5 senedir uğraşmadım yanış yönlendirmemek adına bir değişiklik yaptım.

    a dizisini sadece declaretion kısmında tanıtmıyor muyuz?
    Yani
    void main()
    {
    int a[SIZE];

    //kullanıcıdan size aldım ve SIZE dan farklı bir değer

    int a[size];
    return (0);
    }

    Bu şekilde declare edilemez diye biliyorum. Evet compiler hata veriyor :(




  • 2 kere diziyi tanıtmayacaz

    once size diye bir değişken tanımlayıp
    ona kullanıcıdan bir değer alıp atayıp
    daha sonra int a[size] yapacaz.

    quote:

    Orijinalden alıntı: saxahan

    a dizisini sadece declaretion kısmında tanıtmıyor muyuz?
    Yani
    void main()
    {
    int a[SIZE];

    //kullanıcıdan size aldım ve SIZE dan farklı bir değer

    int a[size];
    return (0);
    }

    Bu şekilde declare edilemez diye biliyorum. Evet compiler hata veriyor :(

  • bu şekilde olmaz arkadaşlar. array size constant olup copile anında belirlenmesi gerekir.

    bunun için 2 yol öneririm, 2.si tercih edilir.

    1. yol sen normal arrayini tanımlarsın mesela 10luk, daha sonra kullanıcıdan bi sayı alırsın (10dan küçük olmalı bu örnek için) ve oluşturmuş olduğun arrayin sadece bu sayı kadarki kısmını kullanırsın.

    2. yol dinamik array kullanmak, pointer biliyosan yaz açıklamaya çalışayım yoksa mecburen 1.sini yapıcaksın
  • 1.ni uygulayıp interactive program olarak kullanıcıya uyarı vermek mantıklı olucak :) teşekkürler.
  • pointer biliyosan 2.si daha mantıklı
    hem gereksiz ram kullanmazsın(tabiki bu aşamada görünmez bu fark)
    ama esas olarak kullanıcaya bi limit koymamış olursun(mesela sen yazarken 10luk bişey oluşturdun) ben 11lik kullanmak istersem sorun olur.

    2. yolun kodu

    main(){
    int size;
    cin<<size;
    int *arr = new int[size];
    ......
    delete arr;
    }
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.