Arama butonu
Bu konudaki kullanıcılar: 1 misafir
1
Cevap
1263
Tıklama
0
Öne Çıkarma
C++ Matriste en büyük değeri bulmada sorun.
K
16 yıl
Binbaşı
Konu Sahibi

Arkadaşlar yapmakta olduğum bir çalışma için boyutları girilen bir matrisi data dosyasından okuyacak ve her bir sütündaki mutlak değerce en büyük sayıyı bulup ekrana yazdıracak bir program gerekiyordu. Ben de bunu C++'da yazdım. Fakat gel gör ki program 3x3, 5x5 gibi küçük matrislerde sorunsuz çalışırken, bana asıl lazım olan 4000x6, 2000x6 gibi matrislerde son 10-15 değerden en büyüğünü yazmaya başladı. Yani hatalı çalışıyor. Programın kodu aşağıdaki gibi. Yardımcı olursanız işim çok kolaylaşacak:

 

#include <cstdlib>
#include <iostream>
#include <fstream>
#include <iomanip>
#include <cmath>


using namespace std;

int main(int argc, char *argv[])
{
cout << "MAX ABSOLUTE VALUE FINDER\n\n";
cout << "======================================================\n";
cout << "\n";
cout << "BU PROGRAM BOYUTLARI GIRILEN BIR MATRISIN\n";
cout << "HER BIR SUTUNUNDAKI MAX MUTLAK DEGERI VERIR\n\n";
cout << "\n";
cout << "======================================================\n\n\n";


float u[4000][25];
float absu[4000][25];

int n;
int m;
float max=0;

cout << "Satir sayisini giriniz\n" << endl;
cout << "El Centro icin = 4000" << endl;
cout << "Northridge icin = 2000\n" << endl;
cin >> n;

n=n+1;

cout << "\n";
cout << "\n";

cout << "Sutun sayisini giriniz\n" << endl;
cin >> m;
cout << "\n";
cout << "\n";

ifstream ifile;
ifile.open ("data.txt");

absu[1][2]=0;



for (int i=2; i<=n+1; i++)
{
for (int j=2; j<=m+1; j++)
{

ifile >> u[i][j];
cout << u[i][j] << "\t";
absu[i][j]=abs(u[i][j]);

}



cout << endl;

}

cout << "\n";
cout << "max degerler:\n";



for (int j=2; j<=m+1; j++)
{
for (int i=2; i<=n+1; i++)
{

if (absu[i-1][j] < absu[i][j])
{
max=absu[i][j];
}


}

cout << max << endl;

}



ifile.close ();



system("PAUSE");
return EXIT_SUCCESS;
}


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



B
16 yıl
Yarbay

algoritmanda hata var.sen elemani sadece bir onceki elemanla karsilastirip sonuc max'a atamissin.eger en sondaki elemanlar digerlerinden cok kucukte olsa bir onceki elemandan buyukse max'a en son onu atadigi icin onu yazacaktir.5*5 ve 3*3 te dahi boyle olacaktir. if icine "absu[i-1][j] < absu[ i ][j]" yerine "max< absu[ i ][j]" yazarsan sorunun cozulecektir.
edit-budut:yeni farkettim 6 gun gecmis ,sen cozumu coktan bulmussudur.buralar pek kimse ugramiyor heralde :D





< Bu mesaj bu kişi tarafından değiştirildi blackzeros -- 20 Mart 2009; 10:27:41 >

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.