Jazyk C zoradenie mien abecedne

Vývojová prostředí, aplikace, skripty, http://www... síťové programy, internet, sdílení...
Zamčeno
buckynho
Nováček
Nováček
Registrován: 20. úno 2008
Bydliště: Hurbanovo (SK)

Jazyk C zoradenie mien abecedne

Příspěvek od buckynho »

Prosím Vás veľmi pekne nemohol by mi sem niekto napísať zdrojový kód na tento príklad ?? bol by som moc vďačný :)

Na standardnom vstupe je dana postupnost mien osob; kazdy riadok obsahuje jednu osobu -- dve mena (krstne meno a priezvisko) oddelene medzerou. Vasou ulohou je na vystup vypisat mena osob v usporiadanom poradi podla priezviska vzostupne (zacinaju priezviska s A, potom B, potom C, ... az Z). Ak maju dve osoby rovnake priezvisko, tak skor vypiste osobu s abecedne mensim krstnym menom. Pocet osob na vstupe nie je zadany, citajte do konca vstupu, a potom vypiste na standardny vystup vysledok.

Pomocka c.1: Do konca vstupu citate pokym vam scanf vracia kladne cislo.
Pomocka c.2: Koniec vstupu si bezne (ked pouzivat scanf) neviete nasimulovat, skuste si zadefinovat nejake specialne meno napr. BYE BYE, ktore program ukonci. Slubujem vam, ze meno BYE BYE nie je na vstupe.
Pomocka c.3: Mena si mozete reprezentovat v strukture, teda ako: struct Osoba { char *meno, *priezvisko; }
Pomocka c.4: Pri nacitavani pouzivajte scanf. Prosim vas, nepouzivajte %c to je len pre jeden znak (char) ... pouzivajte %s ... to je na retazec znakov (napr. char buf[100])
Pomocka c.5: Mena mozete nacitavat nejako takto: while (scanf("%s %s", buf2, buf2) > 0)
Pomocka c.6: pri nacitani do retazca (char buf1[100]) nepouzivajte v scanf adresu &, lebo buf1 je sam o sebe adresa pola ... cize: char buf1[100], buf[200];
while (scanf("%s %s", buf1, buf2) > 0)
{
if (!strcmp(buf1, "BYE")) // pre retazce musite pouzit na porovnanie funkcie strcmp, ktora je v string.h kniznici break;
}
Pomocka c.7: Na abecedne usporiadanie dvoch retazcov pouzivajte funkciu strcmp v string.h
Pracuje nasledovne: strcmp(buf1,buf2) vrati hodnotu 0 ak su retazce totozne, vrati -1 ak je prvy retazec abecedne mensi ako druhy, a vrati +1 ak je prvy vacsi ako druhy ... NEPOROVNAVAJTE RETAZCE KADEJAKO PO PISMENKACH, POUZITE FUNKCIU STRCMP... priklad: strcmp("Obama", "Obama") vrati 0, strcmp("Adam", "Eva") vrati -1, strcmp("Zelovoc", "Potraviny") vrati 1.
Pomocka c.8: Na usporiadanie mozte zvolit dva pristupy: Alebo budete presuvat cele sturktury, a potom to len vypisete od 0 po n-1, alebo si spravite nove pole pre nepriamu adresaciu... Nazvyme to pole T, chcete aby osoba[T[0]] bola najmensia osoba, osoba[T[1]] druha najmensia, atd ... na zaciatok je T[0]=0,T[1]=1,T[2]=2,...,T[n-1]=n-1. Uloha je preusporiadat T tak, aby platilo, ze osoba na indexe T[0] bola najmensia mozna... teda napr. ze T[0] je 3 - ak stvrta (lebo indexujeme od nuly) osoba na vstupe ma abecedne najmensie priezvisko.
Pomocka c.9: Zvolne si priame presuvanie struktur. Jazyk C obsahuje vstavanu funkciu na triedenie -- qsort. Ak mate osoby v strukture struct Osoba osoby[500]; tak utriedite to volanim: qsort(osoby, n, sizeof(struct Osoba), osoba_cmp); kde n je pocet osob, a osoba_cmp je porovnavacia funkcia -- aby vedel sort, ako to chcete triedit. Zostava spravit porovnavaciu funkciu osoba_cmp.
Pomocka 10: Porovnavacia funkcia osoba_cmp vracia rovnake hodnoty ako pri porovnavani retazcou s strcmp. Len teraz porovnavame cele osoby. Ak by sme porovnavali len podla priezviska tak potom:
int osoba_cmp(const void *va, const void *vb)
{
struct Osoba *oa = (struct Osoba*)va, *ob = (struct Osoba *)ob;
return ???;
}
Poznamka c. 11: ked uz mam scanfom nacitane pole znakov (retazec), napr. buf1, tak potom musim este nacitane meno prekopirovat do pola s osobami... teda osoba.meno = strdup(buf1);

ĎAKUJEM !!!
Maranov
Mírně pokročilý
Mírně pokročilý
Uživatelský avatar
Registrován: 21. črc 2006

Re: Jazyk C zoradenie mien abecedne

Příspěvek od Maranov »

Laskavě si vezmi tento urážlivý pokus o podvod a vrať se tam, kde jsi ho získal. Jako by nešlo dokonce všechno tohle vygooglit.
DESKTOP: C2D E8200 (pasivně); ATI HD 3870 (AC S1, 120 fan@5V); 4GB RAM; OCZ Vertex2 SSD 64GB; 320+320+250GB JBOD (odhlučněno); 2x FSC P19-2 (2056x1024)
MOBILE: Lenovo Thinkpad T420 4177 CTR, Crucial M4 SSD 128GB, 6GB RAM; FSC P19-2; Logitech G400
POCKET: Nokia Hulmia 800; Hitachi 500GB@Scythe Kamazo 2 (eSATA); Creative EP-630
AUDIO: Sennheiser HD 555 (foam mod), NuForce Icon µDAC, FLAC, ReplayGain, f2k

"A Man's mortality is a compass that points his way in life."
OndraSter
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 22. úno 2006
Bydliště: Praha / ČVUT FIT
Kontaktovat uživatele:

Re: Jazyk C zoradenie mien abecedne

Příspěvek od OndraSter »

Kolik zaplatíš, buckynho? :P

LOCK.
PC: i5-2500k 4.5GHz/24GB RAM/GTX560 Ti 1GB/>5TB - W7 Prof x64; Microsoft SideWinder X3 notebook: HP 6715b (4GB RAM) - W7 Prof x64;
mobil: Nokia Lumia 800 Cyan, 16GB; tablet: Toshiba Portege M200 (2GB, 64GB SSD, GeForce FX5200) - W7 Prof x32


Nahraďte Arduino výkonnější variantou!
Vývojová prostředí a nástroje | Webové prohlížeče | Seznam freehostingů
beardie
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 10. srp 2005

Re: Jazyk C zoradenie mien abecedne

Příspěvek od beardie »

domace ulohy ee, spytaj sa kamaratov
¿ʇı ʇ,usı 'ƃuıʎouuɐ ʎʇʇǝɹd sı uʍop ǝpısdn ƃuıpɐǝɹ
Zamčeno

Zpět na „Programování a web“