C++ program związany z tablicą

0

Mam napisać program, który po wczytaniu danych do tablicy znajdzie największą liczbę w tablicy i poda jej pozycję w tablicy, oraz jeśli tych maksów jest więcej niż jeden, to poda stosowną informację. O ile udało mi się wyszukać największą wartość i podać pozycję w tablicy, to nie wiem jak uwzględnić w programie ten ostatni warunek.

#include<iostream>
int main()
{
	using namespace std;
	float tab[4];
        int x;
	float max;
        int pozycja;
 
		for(x = 0; x<4 ; x++) //wczytywanie danych
	{
		cout << "tab["<< x <<"]=";
		cin >> tab[x];
		
		}
	
	for(x = 0; x<4 ; x++)  //wyswietlenie danych
	{
		cout <<"tab["<< x <<"]="<< tab[x] <<endl;
			
		}
	
   
   
    max = tab[0];
    pozycja = 0;

	for(x = 0; x<4 ; x++)
	
	{	
	

	
	if(max<tab[x])
			{
		
		max = tab[x];
		pozycja = x;
	    
	   }			

	}
	 
	   
	
cout << "maksymalna wartosc to: tab[" << pozycja <<"]="<< max <<endl;
	
	
	
}
0

Po prostu, ostatni warunek mówi o tym, że jeśli jest kilka tych samych wartości maksymalnych to trzeba podać stosowny komunikat. Możesz najpierw znaleźć max, a następnie sprawdzić ile razy występuje w tablicy i jeśli występuje więcej niż jeden raz to o tym poinformować. Możesz też zliczać maxima na bieżąco - czyli jeśli jakaś wartość jest równa obecnemu maximum, to zwiększasz licznik.

PS. Patryk mnie uprzedził ;)

0

Zrób dodatkową zmienną typu unsigned int, która będzie licznikiem; początkowo równa zeru.
Gdy ustawisz nową wartość maksymalną, zresetuj ten licznik (tj.ustaw na 1, bo jeden 'maks' już mamy), a gdy jakaś wartość w tablicy będzie równa aktualnej wartości maksymalnej, inkrementuj ten licznik.

0

No właśnie próbowałem zrobić deklarując nową zmienną równą jeden, tylko nie wiem w którym miejscu umieścić inkrementację. Dorzucałem w forze if(max=tab[x]) zmienna++, przed tym ifem który istnieje, ale robiły mi się jakieś durne wyniki.

1
despised napisał(a):

Dorzucałem w forze if(max=tab[x]) zmienna++, przed tym ifem który istnieje, ale robiły mi się jakieś durne wyniki.

= to operator przypisania, == to operator porównania.

0

poczytaj sobie o funkcjach.
Niech jedna funkcja zwróci Ci max z danej tablicy (przekazanej jako paramter)
A druga funkcja niech zlicza Ci ile razy wystepuję dana liczba w tablicy

raz, że poznasz co to funkcje
dwa, że program będzie czytelniejszy
trzy, szybciej to zrozumiesz (niż to co masz teraz zrobić)

0

for(x = 0; x<4 ; x++)
{
if(max==tab[x])
w++;

}
Coś takiego ? Dlaczego jak to wrzucę w tego fora, który już jest, to wywala złe wyniki, a zapisane jako osobna pętla jest ok ?

1
despised napisał(a):

if(max==tab[x])

http://www.dodgycoder.net/2011/11/yoda-conditions-pokemon-exception.html
Pokaż cały kod z tą zmianą włącznie.

0
#include<iostream>
int main()
{
	using namespace std;
	float tab[4];
        int x;
	float max;
        int pozycja;
 
		for(x = 0; x<4 ; x++) //wczytywanie danych
	{
		cout << "tab["<< x <<"]=";
		cin >> tab[x];
		
		}
	
	for(x = 0; x<4 ; x++)  //wyswietlenie danych
	{
		cout <<"tab["<< x <<"]="<< tab[x] <<endl;
			
		}
	
   
   
    max = tab[0];
    pozycja = 0;
int w;
w=0;
	
	for(x = 0; x<4 ; x++)
	
	{	
	
	if(max<tab[x])
			{
		
		max = tab[x];
		pozycja = x;
	    
	   }		
	
	
	
	}
		 	
			 for(x = 0; x<4 ; x++)
{
	if(max==tab[x])
	 w++;
	
}
	 
	 

	 
	
	
cout << "maksymalna wartosc to: tab[" << pozycja <<"]="<< max <<endl;
	cout << " sa "<< w <<" takie liczby";
	
	
}
0

Formatowanie kodu w stylu rzucania kostką i naciskania spacji? Nim będzie można cokolwiek powiedzieć, sformatuj ten kod porządnie.

0
#include<iostream>
int main()
{
	using namespace std;
	float tab[4];
	int x;
	float max;
	int pozycja;
 
	for(x = 0; x<4 ; x++) //wczytywanie danych
		{
			cout << "tab["<< x <<"]=";
			cin >> tab[x];
		
		}
	
	for(x = 0; x<4 ; x++)  //wyswietlenie danych
		{
			cout <<"tab["<< x <<"]="<< tab[x] <<endl;
			
		}
	
	max = tab[0];
	pozycja = 0;
	int w;
	w=0;
	
	for(x = 0; x<4 ; x++)
	
		{	
	
	  		if(max<tab[x])
	   		{
		
				max = tab[x];
				pozycja = x;
	    
	   		}		
	
	
	
		}
		 	
	for(x = 0; x<4 ; x++)
    	{
		 if(max==tab[x])
		 w++;
	
    	}
	 
	cout << "maksymalna wartosc to: tab[" << pozycja <<"]="<< max <<endl;
	cout << " sa "<< w <<" takie liczby";
	
	
}
0

No, i ten kod działa: http://ideone.com/7eFehp

1 użytkowników online, w tym zalogowanych: 0, gości: 1