Odwoływanie się do elementów struktury

0

Witam!

Moim zadaniem jest stworzenie programu symulującego rozgrywki piłkarskiej ekstraklasy, ale mam pewien problem - nie potrafię skorzystać z elementów struktury, weźmy dla przykładu bardzo uproszczoną wersję:

#include <stdio.h>
#include <stdlib.h>


struct druzyna {
   char nazwa[20];
   double sila;
   double punkty;
}; 				
	void main () {
	druzyna 0={"Legia","67","0"};
	druzyna 1={"Jaga","36","0"};


	if (0.sila>1.sila)
	{printf ("Wygrala a\n");}
	else {printf("Wygrala b\n");}

}

Co zrobić, żeby móc korzystać z poszczególnych elementów struktury?

1
druzyna Tb[]={{"Legia",67,0},{"Jaga",36,0}};
(Tb[0].sila>Tb[1].sila)
0

Dziękuję za to, już wiem o co chodzi. Ale dlaczego nie chce mi zadziałać drukowanie nazwy drużyny?

struct druzyna {
   char nazwa[20];
   double sila;
   double punkty;
}; 				
	void main () {
	druzyna Tb[]={{"Legia",67,0},{"Jaga",36,0}};

	if (Tb[0].sila>Tb[1].sila)
	{printf ("Wygrala %c\n",Tb[0].nazwa);}
	else {printf("Wygrala b\n");}

}
0

Jaki kod takie działanie. Co to jest %c? Po else w ogóle nie podajesz nazwy.

0

%c czyli wyświetlenie zmiennej typu char, a po else nie dałem nazwy, bo nie ma znaczenia, akurat w tym kodzie zawsze wygra pierwsza drużyna więc nie pisałem bez sensu Tb[1].nazwa. Co nie zmienia faktu, że nadal nie wiem czemu mi nie chce to działać

2

Działa. Ale jeżeli ma być string to w łancuchu formatujacym wpisz %s.

0

A jeżeli teraz chcę posortować drużyny po ilości zebranych przez nie punktów to jak powinienem zmienić ten fragment? Rozumiem, że nie mogę zrobić po prostu char=char, potrzebny tu jakiś cudzysłów?

double temp;
char temp2[20];

for(int j=0;j<15;j++){
for (int i=0;i<15-j;i++)
{if(Tb[i].punkty<Tb[i+1].punkty)
{temp=Tb[i].punkty;
Tb[i].punkty=Tb[i+1].punkty;
Tb[i+1].punkty=temp;
temp2=Tb[i].nazwa;
Tb[i].nazwa=Tb[i+1].nazwa;
Tb[i+1].nazwa=temp2;}
}} 

Dziękuję za dotychczasową pomoc :)

0

Nie mogę korzystać z funkcji, których do tej pory nie miałem na zajęciach, więc sortowanie muszę zrobić w ten sposób (i nawet on działa). Chodzi mi natomiast dokładnie o fragment

temp2=Tb[i].nazwa;
Tb[i].nazwa=Tb[i+1].nazwa;
Tb[i+1].nazwa=temp2;

Nie wiem w jaki sposób zamieniać między sobą wartości typu char, bo dostaję taki błąd:
error C2106: '=' : left operand must be l-value

1

Sądzisz że na zajęciach będziesz miał chociażby 10% dostępnych funkcji? Jeżeli tak myślisz to się mylisz.
Zadeklaruj druzyna temp; i przypisuj całość: temp=Tb[i]; Tb[i]=Tb[i+1]; Tb[i+1]=temp;

1

Przeczytaj pierwszy lepszy kurs, pierwsze 5 zdań. Konkretnie te o nazywaniu zmiennych.

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