Zadanie ze strukturami

0

Potrzebuje rozwiązać to zadanie

a) Utwórz tablicę 5 punktów. Opis punktu składa się z jednoliterowej nazwy i współrzędnych. Znajdź punkt znajdujący się najbliżej i najdalej od początku układu współrzędnych. Wyświetl jego nazwę i współrzędne. Wykorzystaj funkcje z poprzednich zadań.
b) Wczytaj współrzędne punktów z pliku. Przykładowa postać plik z danymi:
a 1 1
b 2 3
c 3 5
d 4 5
e 2 6
c) Załóżmy, że w pierwszym wierszu pliku z danymi umieszczona jest liczba punktów. Zmodyfikuj program tak, aby uwzględnić zmienną liczbę wczytywanych danych. Zabezpiecz się przed przekroczeniem rozmiaru tablicy.

Fragment kodu napisanego przez mnie to

#include <iostream>
#include<cmath>
using namespace std;

const int maax=4;
struct Punkt
{
    double x;
    double y;
    char znak;
} tab_wsp[10][10];//w tablicy mozna umiescic 100 punktow


void czytajP(Punkt *p);
void wypiszP(Punkt *p);
void obliczodleg(Punkt *p);

int main ()
{
    Punkt pkt;
    czytajP(&pkt);
    wypiszP(&pkt);
    obliczodleg(&pkt);
    return 0;
}

void czytajP(Punkt *p)
{
    for (int i=0; i<=maax; i++)
    {
        cout <<"Podaj wspolrzedne ";
        cout <<endl;
        cout << "x1=";
        cin >> tab_wsp[i][i].x;
        cout << "y1=";
        cin >> tab_wsp[i][i].y;
        cout << "Znak punktu :";
        cin >> tab_wsp[i][i].znak;
    }
}

void wypiszP(Punkt *p)
{
    for (int i=0; i<=maax; i++)
    {
        cout << "Punkt "<< tab_wsp[i][i].znak <<": (" << tab_wsp[i][i].x << ","<< tab_wsp[i][i].y << ")" << endl;
    }
}

void obliczodleg(Punkt *p)
{
    double wynik[maax];
    for (int i=0; i<=maax; i++)
    {
       wynik[i]= sqrt(tab_wsp[i][i].x*tab_wsp[i][i].x+tab_wsp[i][i].y*tab_wsp[i][i].y);
        cout << "Odleglosc punktu " << tab_wsp[i][i].znak << " od poczatku ukladu wspolrzednych to: " << wynik[i];
        cout << endl;
    }
 
0

Do tego co wyżej, funkcje mogą być bez argumentów bo tablica i struktura globalna (a ty i tak z nich nie korzystałeś), poza tym:
zmień kolejność wczytywania (najpierw jest nazwa a potem współrzędne).
w forach nie żadne <= maax tylko mniejsze bo zaczynasz od zera. Czyli dla maax = 5, indeksy w tablicy będą 0, 1, 2, 3, 4.
Znalezienie najbliższego i najdalszego to najłatwiejsza część ustalasz "bazowo" maksymalny na 0, zaś minimalny na 1-wszy wczytany element, i potem sprawdzasz czy nowo wczytany nie jest czasem bliżej niż dotychczasowy minimalny lub dalej niż maksymalny. Tak więc tablica zbędna.

edit: jesteś pewien że nazwa zawsze będzie mieć tylko jeden znak? ja bym dał co najmniej tablicę charów, jak nie stringa

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