Arama butonu
Bu konudaki kullanıcılar: 1 misafir, 1 mobil kullanıcı
0
Cevap
158
Tıklama
0
Öne Çıkarma
Arkadaşlar acil yardım C++
K
8 yıl
Er
Konu Sahibi

Arkadaşlar hoca ödev verdi ödev şu şekilde:

olustur isimli bir fonksiyon ile 10x10 boyutlu ve elemanları 1-100 ( alt ve üst sınırlar dahil) arasında rasgele sayılardan oluşan bir matris elde edilmelidir.

Not1: Ancak, matris oluşturulurken kullanılan bir sayı yalnızca bir kez kullanılmalı ve tekrar etmemelidir.

Not2: olustur fonksiyonu ile matrisi üretme işlemi tamamladıktan sonra, matrisi oluşturmak için rand() fonksiyonunu kaç defa çağırdığı bilgisini değer olarak döndürmelidir.

olustur fonksiyonu içerisinde rasgele üretilen matris elemanlarının tekrarlanmama durumu bool dönüş tipine sahip elemanKontrol isimli bir fonksiyon tarafından gerçekleştirilmelidir.

Not3: elemanKontrol fonksiyonu, rand() fonksiyonu tarafından üretilen değeri matrisin o zamana kadar mevcut elemanları ile karşılaştırmalı ve gerekli dönüş değerini döndürmelidir.

matrisYaz isimli fonksiyon ile oluşturulan iki boyutlu dizi (matris gösterimi şeklinde) ekrana yazdırılmalıdır.

sirala isimli fonksiyon kullanılarak, oluşturulan matrisin elemanları en büyükten en küçüğe sıralanmalıdır. Ardından sıralanmış matris, matrisYaz fonksiyonu ile ekrana yazdırılmalıdır.

Not4: Programda kullanılan tüm fonksiyonların bildirimi main öncesinde yapılmalıdır. (prototip tanımlama)

arkadaşlar bizden istenilen gibi diziyi oluşturdum fakat eleman kontrol ile düzeltmeye çalıştığımda bir türlü başaramadım yazdığım kod şöyle:

#include <iostream>
#include <locale>
#include <string>
using namespace std;

class matriss {
public:
int matris[10][10];
int olustur();
int elemanKontrol(int deger1, int c, int v);
void matrisYaz(int matris2[10][10]);
void sirala();
int randcagirma = 0;
}m1;

void main() {
setlocale(LC_ALL, "turkish");
m1.olustur();
cout << "Rand fonksiyon'unun çağırılma sayısı: " << m1.olustur() << endl;
m1.matrisYaz(m1.matris);
m1.sirala();
cout << endl << "Sıralanmış matris:" << endl;
m1.matrisYaz(m1.matris);
cout << endl;
system("pause");
}

void matriss::sirala() {
int i, j, k;
for (i = 0; i<10; i++)
for (j = 0; j<9; j++)
for (k = j + 1; k<10; k++)
if (matris[j]<matris[k])
{
int bos = matris[j];
matris[j] = matris[k];
matris[k] = bos;
}
}

int matriss :: olustur() {
for (int i = 0; i < 10; i++) {
for (int m = 0; m < 10; m++) {
m1.matris[m] = rand() % 100;
m1.randcagirma++;
int deger = m1.matris[m];
do {
elemanKontrol(deger, i + 1, m + 1);
if (elemanKontrol(deger, i + 1, m + 1) == 0) {
m1.matris[m] = rand() % 100;
randcagirma++;
}
} while (elemanKontrol(deger, i + 1, m + 1) == 1);

}
}
return randcagirma;
}
int matriss :: elemanKontrol(int deger1, int c, int v) {
for (int j = 0; j < c; j++) {
for (int l = 0; l < v; l++) {
if (j == c - 1 && l == v - 1)
return true;
if (deger1 == m1.matris[j][l])
return false;
}
}
}
void matriss::matrisYaz(int matris2[10][10]) {
for (int i = 0; i < 10; i++) {
if (i != 0) {
cout << endl;
}
for (int l = 0; l < 10; l++) {
cout << matris2[l] << " ";
}
}
}
arkadaşlar do döngüsünü çıkarınca çalışıyor fakat çıkarmayınca çalışmıyor bi kontrol edip öneri verirseniz çok hoş olur.

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil



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.