Znajdowanie indexu liczby z tablicy

0

Mam taki problem z drugą czescia punktu 4. Wyznaczylem max i min punktow x i y. I teraz nie wiem co zrobic bo nie chce mi sie przekonwertowac liczby ze struktury do normalnej liczby.

Mam takie polecenie:

struct punkt{
int x,y;
};

1.Wczytaj licbe punktow (n-int)
2.Wczytaj położenie punktów do talicy
3.Napisz funkcję wypisującą położenia (void wypisz(punkt tab[], int n)
4.Napisz funkcje wyznaczającą punkt, który jest najwyżej(max y) i po lewej(min x), jednoczesnie(zwraca index)
(int ekstremum(punkt tab[], int n))

5.Napisz funkcję wyznaczającą ilosc punktów w odległsci mniejszej niz podana od (0.0)
(int liczba(punkt tab[], int n, double od[] )

A to jest moj kod:

#include <iostream>
 
using namespace std;
 
struct punkt{
    int x,y;
};
 
void wypisz(punkt tab[], int n){
    for(int i=0; i<n; i++){
        cout<<"Polozenie x,y punktu "<<i+1<<" to: "<<tab[i].x<<","<<tab[i].y<<endl;
    }
}
 
 
int ekstremum(punkt tab[], int n){
    int min,max,index;
    for(int i=0; i<n; i++){
        max=tab[0].y;
        min=tab[0].x;
    }
 
    for(int i=0; i<n; i++){
        if(tab[i].y>max) max=tab[i].y;
        if(tab[i].x<min) min=tab[i].x;
    }
    <u>for(int i=0;i<n; i++){
            if(max=tab[i] && min<0){
                index=i;
            }
    }</u>
    return index;
}
int main()
{
    punkt tab[100];
    int n;
 
    cout<<"Podaj ilosc punktow: ";
    cin>>n;
    for(int i=0; i<n; i++){
        cout<<"Podaj polozenie punktu " <<i+1<<" x: "; cin>>tab[i].x;
        cout<<"Podaj polozenie punktu " <<i+1<<" y: "; cin>>tab[i].y;
    }
    cout<<endl<<endl;
    wypisz(tab, n);
    cout<<endl<<endl;
    cout<<"Punkt o wspolzednych najbardziej na lewo i do gory to: "<<ekstremum(tab,n);
    return 0;
}
0

Źle zdefiniowane zadanie, dla danych: (0,1),(1,0),(10,-10) - co funkcja ma zwrócić 0 czy 1?

0

@_13th_Dragon: Wydaje mi się że (0,1), bo gdy wartosc x jest taka sama, to program ma brac wiekszego y, a jak wartosc y jest taka sama to ma brac mniejszego x.

1
Goryl128 napisał(a):

@_13th_Dragon: Wydaje mi się że (0,1), bo gdy wartosc x jest taka sama, to program ma brac wiekszego y, a jak wartosc y jest taka sama to ma brac mniejszego x.

A dla (-1, 0), (0, 1)?

0

@TomRiddle: Chyba tą głowna osia ma byc x i wtedy z (-1,0) powinien brac dane

0
int ekstremum(punkt tab[], int n)
{
    int ret=-1;
    for(punkt extr;n--;) if((ret<0)||(tab[n].y>extr.y)||((tab[n].y==extr.y)&&(tab[n].x<extr.x))) extr=tab[ret=n];
    return ret;
}
0

@Goryl128: @_13th_Dragon: Co bym nie wpisal to zawsze wyskakuje -1

0

@_13th_Dragon: No tak to wyglada i niewazne co wpisze to wyskakuje -1.

#include <iostream>
#include <algorithm>

using namespace std;

struct punkt{
   int x,y;
};

void wypisz(punkt tab[], int n){
   for(int i=0; i<n; i++){
       cout<<"Polozenie x,y punktu "<<i+1<<" to: "<<tab[i].x<<","<<tab[i].y<<endl;
   }
}

int ekstremum(punkt tab[], int n)
{
   int ret=-1;
   punkt extr;
   while(n--)
   {
       if(ret<0) extr=tab[n];
       else if((tab[n].y>extr.y)||((tab[n].y==extr.y)&&(tab[n].x<extr.x))) ret=n;
   }
  return ret;
}

int main()
{
   punkt tab[100];
   int n;

   cout<<"Podaj ilosc punktow: ";
   cin>>n;
   for(int i=0; i<n; i++){
       cout<<"Podaj polozenie punktu " <<i+1<<" x: "; cin>>tab[i].x;
       cout<<"Podaj polozenie punktu " <<i+1<<" y: "; cin>>tab[i].y;
   }
   cout<<endl<<endl;
   wypisz(tab, n);
   cout<<endl<<endl;
   cout<<ekstremum(tab,n);
   return 0;
}

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