merhaba c++ da mesela 20 ile 50 arasında rastgele birbirinden farklı 10 adet sayı üretmek istiyorum ama ne yaptıysam bir türlü olmadı nasıl birşey yapabilirim örneğin 20 32 43 24 26 29 44 43 33 38 gibi olucak
hocam bakamadım kusura bakmayın şöyle birşey yaptım burda 0 la 10 arası rastgele sayılar yapabildim boyutu kaçsa onla o arasında olan sayılar ama bunu bir türlü aralık haline getiremedim 20 ile 50 arasında 10 adet rastgele sayı gibisinden #include <iostream> using namespace std; #include <locale.h> #include <ctime> #include <iostream> int main() { srand(time(0)); const int BOYUT = 10; int rastgeleSayi;
int dizi[BOYUT] = { 0 };
for (int i = 0; i <= BOYUT - 1; i++) {
while (true) {
rastgeleSayi = rand() % 10;
if (dizi[rastgeleSayi] == 0)
{ dizi[rastgeleSayi] = i; break;
}
} } for (int i = 0; i < BOYUT; i++) { cout << dizi << endl; } return 0; }
hocam birde şey düşündüm rastgele sayı üretmek yerine bir dizi oluşturup for ile dizinin elemanlarını tek tek yazdırsam sonra random_shuffle komutu ile dizinin elemanlarını karıştırıp ilk 10 elemanını felan alsam olabilir mi bunun gibi mi birşey yapmalıyım yada random komutu ile farklı bir yolu varmıdır ?
Kod eksik ve hatalı. int dizi[BOYUT] = { 0 }; dediğinde ilk elemana 0 koyar fakat ilk eleman neden 0? Sondaki cout << dizi, cout << dizi i olmalı fakat o çok basit, hatadan saymayalım, ona typo / yazım hatası diyelim.
if (dizi[rastgeleSayi] == 0) kısmında int türünde dizinin endeksine rasgeleSayi koymak ta oldukça radikal bir hata. Ayrıca 20 ve 50 arası kontrol için kullanılacak 20 ve 50 degerlerini göremedim.
bu problemin en direkt çözüm yolu :
20-50 arası ras adında rasgele sayı üret.ras dizinin içinde yoksa diziye ekle, ras dizinin içinde varsa farklı ras ile tekrar (öz) yinele, dizi büyüklüğü boyuta ulaşana kadar bunu (öz) yinele. özyinele => recursion.
ras dizinin içinde yoksa kısmını kolaylıkla yapabilmek için c++11 kullanmalısın. ödevde c++11 değil klasik c++98 kullanmak gibi şart var mı?
random_shuffle kullanarak bahsettiğin çözüm yöntemi bence geçersiz, ona direkt sıfır verebilir hodja :)
< Bu mesaj bu kişi tarafından değiştirildi Tuğkan-0153 -- 6 Nisan 2021; 17:43:38 >
< Bu ileti mini sürüm kullanılarak atıldı > Bu mesaja 1 cevap geldi. Cevapları Gizle
< Bu ileti mini sürüm kullanılarak atıldı > Bu mesaja 1 cevap geldi. Cevapları Gizle
Bu mesajda bahsedilenler: @vonderplanitz
#include <iostream>
using namespace std;
#include <locale.h>
#include <ctime>
#include <iostream>
int main()
{
srand(time(0));
const int BOYUT = 10;
int rastgeleSayi;
int dizi[BOYUT] = { 0 };
for (int i = 0; i <= BOYUT - 1; i++)
{
while (true)
{
rastgeleSayi = rand() % 10;
if (dizi[rastgeleSayi] == 0)
{
dizi[rastgeleSayi] = i;
break;
}
}
}
for (int i = 0; i < BOYUT; i++)
{
cout << dizi << endl;
}
return 0;
}
Bu mesajda bahsedilenler: @vonderplanitz
if (dizi[rastgeleSayi] == 0) kısmında int türünde dizinin endeksine rasgeleSayi koymak ta oldukça radikal bir hata. Ayrıca 20 ve 50 arası kontrol için kullanılacak 20 ve 50 degerlerini göremedim.
bu problemin en direkt çözüm yolu :
20-50 arası ras adında rasgele sayı üret.ras dizinin içinde yoksa diziye ekle, ras dizinin içinde varsa farklı ras ile tekrar (öz) yinele, dizi büyüklüğü boyuta ulaşana kadar bunu (öz) yinele. özyinele => recursion.
ras dizinin içinde yoksa kısmını kolaylıkla yapabilmek için c++11 kullanmalısın. ödevde c++11 değil klasik c++98 kullanmak gibi şart var mı?
random_shuffle kullanarak bahsettiğin çözüm yöntemi bence geçersiz, ona direkt sıfır verebilir hodja :)
< Bu mesaj bu kişi tarafından değiştirildi Tuğkan-0153 -- 6 Nisan 2021; 17:43:38 >
< Bu ileti mini sürüm kullanılarak atıldı > Bu mesaja 1 cevap geldi. Cevapları Gizle
Bu mesaja 1 cevap geldi. Cevapları Gizle
Bu mesajda bahsedilenler: @vonderplanitz
özyineleme tekniği uygulanmış c++11 çözümü
< Resime gitmek için tıklayın >
Not: debug etme amaçlı koyduğum sort orada kalmış, onu kaldırırsan sayıların sırası da rasgele olur.
< Bu mesaj bu kişi tarafından değiştirildi Tuğkan-0153 -- 6 Nisan 2021; 21:15:28 >
< Bu ileti mini sürüm kullanılarak atıldı >
Bu mesajda bahsedilenler: @themathado53