Çözüldü C++ iki boyutlu diziye rastgele sayı atama

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

ikaross

Hectopat
Katılım
15 Mayıs 2020
Mesajlar
680
Yer
İstanbul
Daha fazla  
Cinsiyet
Erkek
Meslek
öğrenci
Arkadaşlar ödevimden ötürü kodumda 10 satır 15 sütunlu olacak şekilde iki boyutlu dizi oluşturup. İçlerine de benzersiz sayı atamam lazım. Rastgele nasıl yapacağım?
 

Dosya Ekleri

  • unknown_2021.04.25-11.59.png
    unknown_2021.04.25-11.59.png
    108,5 KB · Görüntüleme: 213
Çözüm
Söylememe rağmen hala srand kullanmıyorsunuz.
Değişkenlerinizi ilklendirin.
Sabit değişkenleri büyük harfle yazın.
Döngüler tek satır olsa da parantez kullanın.
Index nedir, öğrenin.
For döngüsü değişkenini döngü içerisinde tanımlamanız yeterli.
Sabitleri fonksiyonda da kullanacağınız için global tanımlayın.

Döngüleriniz hatalı. <= yerine < olmalı. Döngünün sonunda ve döngüler bittikten sonra TombalaKart[satir][sutun] elemanına erişmeye çalışıyorsunuz. O tanımlı değil. Index sıfırdan başlar.

Srand kullanmadığınızda ne olduğunu görmeniz için yorumda bıraktım.

Kod:
#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

const int SATIR = 10;
const int SUTUN = 15;

void TombalaKartGoster(int[][15], int);

int main(){
    //srand(time(NULL));
    int TombalaKart[SATIR][SUTUN];

    for (int i = 0; i < SATIR; i++) {
        for (int j = 0; j < SUTUN; j++) {
            TombalaKart[i][j] = rand() % 89 + 1;
        }
    }

    cout << TombalaKart[SATIR - 1][SUTUN - 1] << endl;

    return 0;
}
Saçma. Beyni olan herkes Google'a bir şeyler yazıp bir şeyler öğrenebilir. Yazdığım düzgün kodu hocasının bile bildiğinden şüpheliyim.
Hocam sizin kod biraz ileri sayılır. iomanip kütüphanesini bilmeyen bunları yapamaz. Ayrıca ödev olduğu için anlaşılan bu bir ders. ve C++ dilini yeni öğreniyorlar. Aslında amaç C++ öğrenmek değil ki. Amaç programlamayı öğrenmek. C++ dilinde uzman olmak isteyen öğrenir istediğini.
Köylü olmayan kod c++ için geçerli. Ancak köylü kod çoğu dilde aynıdır. Hocada bunu yapmasını istemesi doğaldır.
 
iomanip kütüphanesini bilmeyen bunları yapamaz.
Çok basit bir şey. Google'a sabit aralık nasıl bırakılır diyoruz ve karşımıza çıkıyor. Kütüphanenin hepsine ben de hakim değilim. Ama böyle bir şey işime yaradığında aradım ve öğrendim. İlerilik bir şey yok. C++ zaten gelişmiş bir dil.

Köylü olan kod C++'ta geçerli değil. C'de geçerli. 20 yıl önce geçerli. Sadece kütüphane adları farklı, ilgili kütüphaneleri eklerseniz ve birkaç ufak değişiklik ile gıkı çıkmaz.
 
Çok basit bir şey. Google'a sabit aralık nasıl bırakılır diyoruz ve karşımıza çıkıyor. Kütüphanenin hepsine ben de hakim değilim. Ama böyle bir şey işime yaradığında aradım ve öğrendim. İlerilik bir şey yok. C++ zaten gelişmiş bir dil.

Köylü olan kod C++'ta geçerli değil. C'de geçerli. 20 yıl önce geçerli. Sadece kütüphane adları farklı, ilgili kütüphaneleri eklerseniz ve birkaç ufak değişiklik ile gıkı çıkmaz.
Hocam başlığa göre haklısınız. Ama içeriğe göre aslında temel yapılar üzerinden bir random matrix oluşturulmak isteniyor.
Bir dili dil yapan şey nedir? Seçimler, döngüler (bir tane daha vardı da unuttum) 2 döngü kullanarak rastgele değerli bir matrix üretebildik. bu temel algoritmadır. Bunun sayesinde tüm dillerde bunu yapabilirsin.(istisna olabilir tabi :D)
Ama tabiki aslında dillerde bunu yapmıyoruz. Python dilinde mesela numpy kütüphanesi var. Kolayca random matrix oluşturabilirsin. C++ dilinde de sizin koddakine benzer algoritmalar mevcut. Dile has kütüphaneler ile yapılıyor. Ama dediğim gibi hoca temel algoritma istiyor. Dile özel kod değil.
 
Forları iç içe döngü olarak ayarlamalısın. Sonra.
C++:
for(int i = 0; i<satir; i++)
for(int j = 0; j<sutun; j++)
TombolaKart[i][j] = rand() % 89 + 1;

Ceza yemiştim yazamadım bu galiba oldu ancak ekrana bastırıp göremiyorum. Ödev şu; 10 satır 15 sütunlu tombala kartları oluşturacağız. Minimum 2 maksimum 5 kişi ile oynanabilir her tur sürekli kart çekilecek. Yerine yazılacak en son birisi kazanana kadar devam edecek işte.
 
Ceza yemiştim yazamadım bu galiba oldu ancak ekrana bastırıp göremiyorum. Ödev şu; 10 satır 15 sütunlu tombala kartları oluşturacağız. Minimum 2 maksimum 5 kişi ile oynanabilir her tur sürekli kart çekilecek. Yerine yazılacak en son birisi kazanana kadar devam edecek işte.
Ödev size ait. Ödevler konuyu daha iyi anlamanızı sağlar. Biraz düşün neden ekrana bastırmıyor? Eğer bilgin yeterli değilse konuyu tekrar etmelisin. Ama hala işin içinden çıkamıyorsan kodu atın yardımcı olmaya çalışırız.
 
Şu an bastıramıyorum ekrana bu hatayı alıyorum. Ödev bugüne olduğundan az çok yetiştirmeye çalışıyorum.
Her seferinde mi alıyorsunuz? Kod olarak paylaşır mısınız?

 
Her seferinde mi alıyorsunuz? Kod olarak paylaşır mısınız?


Evet her seferinde alıyorum çalıştıramadım.

C++:
#include <iostream>
#include <cstdlib>
using namespace std;

void TombalaKartGoster(int[][15], int);

int main()
{
const int satir = 10;
const int sutun = 15;
int TombalaKart[satir][sutun];
int i, j;
for (int i = 0; i <= sutun; i++)
for(int j=0;j<=satir; j++)
TombalaKart[i][j]= rand()%89+1;

cout << TombalaKart[satir][sutun] << endl;
}
 
Söylememe rağmen hala srand kullanmıyorsunuz.
Değişkenlerinizi ilklendirin.
Sabit değişkenleri büyük harfle yazın.
Döngüler tek satır olsa da parantez kullanın.
Index nedir, öğrenin.
For döngüsü değişkenini döngü içerisinde tanımlamanız yeterli.
Sabitleri fonksiyonda da kullanacağınız için global tanımlayın.

Döngüleriniz hatalı. <= yerine < olmalı. Döngünün sonunda ve döngüler bittikten sonra TombalaKart[satir][sutun] elemanına erişmeye çalışıyorsunuz. O tanımlı değil. Index sıfırdan başlar.

Srand kullanmadığınızda ne olduğunu görmeniz için yorumda bıraktım.

Kod:
#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

const int SATIR = 10;
const int SUTUN = 15;

void TombalaKartGoster(int[][15], int);

int main(){
    //srand(time(NULL));
    int TombalaKart[SATIR][SUTUN];

    for (int i = 0; i < SATIR; i++) {
        for (int j = 0; j < SUTUN; j++) {
            TombalaKart[i][j] = rand() % 89 + 1;
        }
    }

    cout << TombalaKart[SATIR - 1][SUTUN - 1] << endl;

    return 0;
}
 
Çözüm
Söylememe rağmen hala srand kullanmıyorsunuz.
Değişkenlerinizi ilklendirin.
Sabit değişkenleri büyük harfle yazın.
Döngüler tek satır olsa da parantez kullanın.
Index nedir, öğrenin.
For döngüsü değişkenini döngü içerisinde tanımlamanız yeterli.
Sabitleri fonksiyonda da kullanacağınız için global tanımlayın.

Döngüleriniz hatalı. <= yerine < olmalı. Döngünün sonunda ve döngüler bittikten sonra TombalaKart[satir][sutun] elemanına erişmeye çalışıyorsunuz. O tanımlı değil. Index sıfırdan başlar.

Srand kullanmadığınızda ne olduğunu görmeniz için yorumda bıraktım.

Kod:
#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

const int SATIR = 10;
const int SUTUN = 15;

void TombalaKartGoster(int[][15], int);

int main(){
//srand(time(NULL));
int TombalaKart[SATIR][SUTUN];

for (int i = 0; i < SATIR; i++) {
for (int j = 0; j < SUTUN; j++) {
TombalaKart[i][j] = rand() % 89 + 1;
}
}

cout << TombalaKart[SATIR - 1][SUTUN - 1] << endl;

return 0;
}

Çok teşekkür ederim.
 
Uyarı! Bu konu 5 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Technopat Haberler

Geri
Yukarı