witam,
problem jest natepujacy:
Mam strukture ktora definiuje zbior punktow. Jeden punkt ma zdefiniowane - 3 wspolrzedne x,y,z i etykiete o max 20 znakach. Jest 80 takich punktow. Uzytkownik sam przypisuje etykiety i wspolrzedne do punktow. Pozniej punkty sa sortowane wg rosnacej odleglosci od poczatku ukladow wspolrzednych (√x+y+z). Sortowanie babelkowe!
Mam problem z sortowaniem tej tablicy a mianowicie z etykietami. Gdy definiuje nowa zmienna 'w' typu char i przypisuje do niej etykiete tablicy przy sortowaniu, otrzymje dziwne znaczki. Oto moj program, poprosze o wskazowki co do przerobki
problem jest natepujacy:
Mam strukture ktora definiuje zbior punktow. Jeden punkt ma zdefiniowane - 3 wspolrzedne x,y,z i etykiete o max 20 znakach. Jest 80 takich punktow. Uzytkownik sam przypisuje etykiety i wspolrzedne do punktow. Pozniej punkty sa sortowane wg rosnacej odleglosci od poczatku ukladow wspolrzednych (√x+y+z). Sortowanie babelkowe!
Mam problem z sortowaniem tej tablicy a mianowicie z etykietami. Gdy definiuje nowa zmienna 'w' typu char i przypisuje do niej etykiete tablicy przy sortowaniu, otrzymje dziwne znaczki. Oto moj program, poprosze o wskazowki co do przerobki
#include <stdio.h>
#include <math.h>
struct Zbior // struktura definiujaca zbior punktow
{
float x,y,z;
char etykieta[20];
};
int main(void)
{
int licznik = 0;
int index;
struct Zbior punkty1[80];
printf("Podaj etykiete punktu.\n");
printf("Aby zakonczyc wcisnij [enter] na poczatku wiersza.\n");
while (licznik < 80 && gets(punkty1[licznik].etykieta) != NULL && punkty1[licznik].etykieta[0] != '\0' )
{
printf("Teraz podaj wartosci punktow x y z.\n");
scanf("%f %f %f", &punkty1[licznik++].x, &punkty1[licznik].y, &punkty1[licznik].z);
while (getchar() != '\n')
continue;
if (licznik < 80)
printf("podaj kolejna etykiete.\n");
}
int i,j;
float t;
for (i=0; i<80-1; i++)
{
for (j=0; j<80-1-i; j++)
{
if (punkty1[j+1].x + punkty1[j+1].y + punkty1[j+1].z < punkty1[j].x + punkty1[j].y + punkty1[j].z)
t=punkty1[j];
punkty1[j]=punkty1[j+1];
punkty1[j+1]=t;
}
printf("Oto lista Twoich punktow:\n");
for (index = 0; index < licznik; index++)
printf ("%s, wspolrzedne: %.2f %.2f %.2f\n", punkty1[index].etykieta, punkty1[index].x, punkty1[index].y, punkty1[index].z);
return 0;
}
}