Zadanie ze struktur i podprogramow

0

Zadanie:

  1. Struct punkt{ x, y (int); waga (float);};

2)wczytać n

3)wczytać n elementową tablicę punktów(N<1000) 3,5)Napisać funkcję zwracajaca punkt o maksymalnej wadze

4)Napisz funkcje zwracającą liczbę punktów z wagami ujemnymi

5)Napisać funkcje zwracającą informacje ( bool) czy istnieją punkty o tych samych współrzędnych

6)Napisać funkcję, która wypisze wagi

 #include <iostream>
using namespace std;

void najwieksza ();
void ujemne ();

struct punkt {
	int x;
	int y;
	float waga;
};

punkt A[1001];
int n;
int main() {

	cout<<"Podaj ilosc liczb: "<<endl;
	cin >> n;

	for (int i = 0; i < n; i++) {
		cout<<"Podaj x:"<<endl;
		cin >> A[i].x;
		cout<<"Podaj y:"<<endl;
		cin >> A[i].y;
		cout<<"Podaj wage:"<<endl;
		cin >> A[i].waga;
	}

	najwieksza();
	ujemne();

	for(int i=0; i<n; i++) {
		cout << A[i].waga <<' ';
	}

	return 0;
}
void najwieksza () {

	float max;
	int tmp=0;
	max = A[0].waga;
	for(int i=0; i<n; i++) {
		if(A[i].waga>max) {
			max= A[i].waga;
			tmp=i;
		}

	}
	cout<<"Liczba o najwiekszej wadze sposrod wylosowanych to:"<<tmp+1<<endl;
}
void ujemne() {
	int licznik=0;
	for(int i=0; i<n ; i++) {

		if(A[i].waga <0 ) {

			licznik++;
		}
	}
	cout<<"Punktow z wagami ujemnymi jest: "<<licznik<<endl;
}

Mam problem z tym podpunktem o funkcji boolowskiej, moglby ktos wstawic snippet jak to powinno wygladac?
Prosze o wyrozumialosc, jestem raczkujacy w C++.

0

Możesz napisać operator porównania dla struktury punkt i w funkcji wyszukującej wykorzystać funkcję http://en.cppreference.com/w/cpp/algorithm/find

0

Zapisuj punkty to mapy (niech klucz bedzie jakas struktura x,y). Wartosc mapy niech bedzie po prostu licznik

Pozniej z mapy wybierasz wszystkie ktore maja licznik wiekszy od 1 i to sa Twoje powtarzajace sie punkty

http://en.cppreference.com/w/cpp/container/map

0

W miedzy czasie wpadlem na coś takiego, poprawiłby mi to ktos?

 #include <iostream>
using namespace std;

void najwieksza ();
void ujemne ();
bool czyTeSameWspolrzedne();
void komunikat( bool czyTeSameWspolrzedne );
struct punkt {
	int x;
	int y;
	float waga;
};

punkt A[1001];
int n;
int main() {

	cout<<"Podaj ilosc liczb: "<<endl;
	cin >> n;

	for (int i = 0; i < n; i++) {
		cout<<"Podaj x:"<<endl;
		cin >> A[i].x;
		cout<<"Podaj y:"<<endl;
		cin >> A[i].y;
		cout<<"Podaj wage:"<<endl;
		cin >> A[i].waga;
	}

	najwieksza();
	ujemne();
	komunikat( czyTeSameWspolrzedne);

	for(int i=0; i<n; i++) {
		cout << A[i].waga <<' ';
	}

	return 0;
}
void najwieksza () {

	float max;
	int tmp=0;
	max = A[0].waga;
	for(int i=0; i<n; i++) {
		if(A[i].waga>max) {
			max= A[i].waga;
			tmp=i;
		}

	}
	cout<<"Liczba o najwiekszej wadze sposrod wylosowanych to:"<<tmp+1<<endl;
}
void ujemne() {
	int licznik=0;
	for(int i=0; i<n ; i++) {

		if(A[i].waga <0 ) {

			licznik++;
		}
	}
	cout<<"Punktow z wagami ujemnymi jest: "<<licznik<<endl;
}
bool czyTeSameWspolrzedne() {

	for(int i=0; i<n ; i++) {
		for(int j=0; i<n; j++) {

			if	(A[i].x == A[j].x && A[i].y == A[j].y) {

				return true;

			} else {
				return false;
			}


		}

	}

}
void komunikat( bool czyTeSameWspolrzedne ) {
	if( czyTeSameWspolrzedne )
		cout << "Sa liczby o takich samych wspolrzednych" <<endl;
	else
		cout << "Nie ma liczb o takich samych wspolrzednych" <<endl;

}


0

W funkcji czyTeSameWspolrzedne():

  1. Usuń else {}, a return false; przenieś na koniec funkcji.
  2. Druga pętla powinna wyglądać tak:
    for (int j = i + 1; j < n; j++)

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