Imi poate arata cineva cum se face asta?
Se consideră următoarele declarații: struct lista { int nr; char nume[30]; float nota; };
struct lista l1[20] , l2[30], l3[50];
Să se scrie un program în C care ordonează l1 şi l2 crescător după câmpul nota, și apoi copiază în l3, toate elementele din l1 si l2 ordonate crescător după acelaşi câmp.
Răspunsuri la întrebare
Răspuns de
1
Treaba e cam asa: poti face orice sortare vrei tu.
Hai sa iti spun modul cel mai usor de inteles. Oricum i1 si i2 tot in i3 ajung asa ca le poti copia direct in i3 si apoi sa le ordonezi.
le copiezi cu doua for-uri.
unul de la 0 la 19 pt i1 si unul de la 20 la 49 pt i2.
Bun acum sa ordonam. Sa pornim de la un vector de numere care trb ordonat. Ai face spre exemplu un bubble sort si ai compara mereu cate doua elemente intre ele. Cam asa e si aici, exact asa, doar ca nu merge cu un simplu <, trebuie o functie custom pt comparare. Asa ca cel mai ok e sa iti faci tu o functie care sa ia ca input doua structuri din alea, s1 si s2, si le compara dupa ce criteriu vrei tu si returneaza un int.
1 daca s1 > s2
0 daca s1 = s2
-1 daca s1 < s2
Si le compari folosind functia asta.
Spor!
Hai sa iti spun modul cel mai usor de inteles. Oricum i1 si i2 tot in i3 ajung asa ca le poti copia direct in i3 si apoi sa le ordonezi.
le copiezi cu doua for-uri.
unul de la 0 la 19 pt i1 si unul de la 20 la 49 pt i2.
Bun acum sa ordonam. Sa pornim de la un vector de numere care trb ordonat. Ai face spre exemplu un bubble sort si ai compara mereu cate doua elemente intre ele. Cam asa e si aici, exact asa, doar ca nu merge cu un simplu <, trebuie o functie custom pt comparare. Asa ca cel mai ok e sa iti faci tu o functie care sa ia ca input doua structuri din alea, s1 si s2, si le compara dupa ce criteriu vrei tu si returneaza un int.
1 daca s1 > s2
0 daca s1 = s2
-1 daca s1 < s2
Si le compari folosind functia asta.
Spor!
catalinmorar:
Pana aici e bine?
do
{
ok=1;
for(i=1;i<=49;i++)
if(l3[i].nota>l3[i+1].nota)
{
ok=0;
aux=l3[i].nota;
l3[i].nota=l3[i+1].nota;
l3[i+1].nota=aux;
}
}
while(ok!=1);
Alte întrebări interesante
Matematică,
8 ani în urmă
Limba română,
8 ani în urmă
Informatică,
8 ani în urmă
Limba română,
9 ani în urmă
Limba română,
9 ani în urmă
Limba română,
9 ani în urmă
Limba română,
9 ani în urmă