C++ Matris hk

Bu konuyu okuyanlar

KL Jyra

Öğrenci
Katılım
10 Aralık 2017
Mesajlar
1
Reaksiyon puanı
0
Puanları
1
Yaş
24
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, matrisYazfonksiyonu 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.
 
Üst