Arama butonu
Bu konudaki kullanıcılar: 1 misafir
8
Cevap
2849
Tıklama
0
Öne Çıkarma
C+ da ödev konusu? kullanıcıdan istenen dizi elementi array[x] ?
S
15 yıl
Yüzbaşı
Konu Sahibi

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 >

D
15 yıl
Binbaşı

Şö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...


Bu mesaja 2 cevap geldi.
S
15 yıl
Yüzbaşı
Konu Sahibi

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.



A
15 yıl
Binbaşı

//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 >
Bu mesaja 1 cevap geldi.
S
15 yıl
Yüzbaşı
Konu Sahibi

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 :(


Bu mesaja 1 cevap geldi.
A
15 yıl
Binbaşı

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 mesaja 1 cevap geldi.
O
15 yıl
Yarbay

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


Bu mesaja 1 cevap geldi.
S
15 yıl
Yüzbaşı
Konu Sahibi

1.ni uygulayıp interactive program olarak kullanıcıya uyarı vermek mantıklı olucak :) teşekkürler.


Bu mesaja 1 cevap geldi.
O
15 yıl
Yarbay

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;
}



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.