Arama butonu
Bu konudaki kullanıcılar: 2 misafir, 1 mobil kullanıcı
1
Cevap
308
Tıklama
0
Öne Çıkarma
C++ Matriste en büyük değeri bulmada sorun.

K Kharia Konu Sahibi
13 yıl (1806 mesaj)
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;
}






B blackzeros
13 yıl (3157 mesaj)
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.