İçeriğe geç
ShiftDelete.Net
Haber ara/ SDN'ye SorGiriş
Haber Akışı SDNTV İnceleme Forum Yapay Zeka Akıllı Telefon Elektrikli Otomobil Oyun ShiftDelete.Net Global Teknoloji Haberleri Mobil Otomobil Donanım Savunma Bilim Sosyal Medya İnternet Giyilebilir Teknoloji Rehber Ürünler Son dakika Yazarlar
  1. Ana sayfa
  2. Topluluk
  3. Yazılım
  4. Diğer Yazılım Konuları
Diğer Yazılım Konuları

C++ Matris hk

KL Jyra10.12.20171 cevap3.896 görüntüleme
2017'den beri1 mesaj
#1
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.
Cevaplar

Cevabını yaz

Cevap yazmak için giriş yap ya da üye ol. Eski forum kullanıcı adın ve parolanla girebilirsin.