Hozzászólások
-
SzerzőBejegyzés
-
DOS-ban igen :))))
Linux alatt a CTRL-Z háttérbe teszi a processt, az EOF a CTRL-DKöszönöm!
Amint hazaérek a munka hevébõl, kipróbálom.Na a végére meg lett 🙂
Ha valakit érdekel:
/* sorokat olvas be szabvanyos bemenetrol. A sorok egy erdemjegyet es egy
Neptun-kodot tartalmaznak vesszovel elvalasztva. A sorok szama tetszoleges.
A program EOF-ig olvas. Kilistazza Beptun-kod szerint, majd erkezesi sorrend
szerint az adatokat. */#include”stdio.h”
#include”stdlib.h”
#include”string.h”#define SORHOSSZ 10
/* a listaelemet tarolo struktura */
typedef struct elem
{
unsigned int jegy; /* az erdemjegy */
char *neptun; /* a neptunkod */
struct elem *kov1; /* a kovetkezo listaelem az elso listaban */
struct elem *kov2; /* a kovetkezo listaelem a masodik listaban */
}elem;elem *fej1 = NULL; /* az elso lista feje */
elem *fej2 = NULL; /* a masodik lista feje */int kissebb(char *s1, char *s2) /* osszehasonlit ket szovaget */
{
int i=0;while (s1 == s2)
i++;if (s1 jegy = jegy;
ujelem->neptun = neptun;
ujelem->kov1 = NULL;
ujelem->kov2 = NULL;return ujelem;
}char *szovegdupl(char s[]) /* karaktersorozat duplazasa */
{
char *p;p = (char *) malloc(strlen(s) + 1);
if (p != NULL)
strcpy(p, s);
return p;
}void beilleszt(unsigned int jegy, char *neptun) /* uj elem a multilistaba */
{
elem *ujelem, *p = fej1;if (fej1 == NULL) { /* ha ures a multilistank */
fej1 = fej2 = foglal_elem(jegy, szovegdupl(neptun));
return;
}ujelem = foglal_elem(jegy, szovegdupl(neptun));
/* megkeressuk a helyet az elso listaban */if (kissebb(fej1->neptun, neptun)) {
while (p->kov1 && kissebb(p->kov1->neptun, neptun))
p = p->kov1;ujelem->kov1 = p->kov1;
p->kov1 = ujelem;
}
else {
ujelem->kov1 = fej1;
fej1 = ujelem;
}/* hozzafuzzuk a masodik listahoz */
p = fej2;
while (p->kov2)
p = p->kov2;
p->kov2 = ujelem;return;
}elem *lista_torol(elem *p) /* a mutilista felszabaditasa */
{
elem *tmp;while (p) {
tmp = p->kov1;
free(p);
p = tmp;
}return NULL;
}main() {
elem *akt;
char neptun[SORHOSSZ]; /* az aktualis sornak */
unsigned int jegy; /* az aktualis erdemjegynek */while (scanf(„%u,%s”, &jegy, neptun) != EOF) /* adatok bekerese */
beilleszt(jegy, neptun); /* lancolas */akt = fej1; /* az elso lista kiirasa */
while (akt != NULL) {
printf(„%u %sn”, akt->jegy, akt-> neptun);
akt = akt->kov1;
}
printf(„—n”);
akt = fej2; /* a masodik lista kiirasa */
while (akt != NULL) {
printf(„%u %sn”, akt->jegy, akt-> neptun);
akt = akt->kov2;
}lista_torol(fej1); /* a mulitilista torlese */
system(„PAUSE”);
return 0;
}
A qsort() része az ANSII szabványnak?
Sajnos most nincs nálam a C könyv.Bár nem akartam megadni a feladatot, de legyen:
Multilista:
Speciális lista. Az adatelem összetett.Három típusa van:
a.) A feldolgozást setgítendõ ahány feldolgozási szempontból szeretném látni az adatelemeket, annyi cím van.
Több lánc van, de minden elem elõfordul minden láncban.
b.) Alapesetben egy cím van. Az adatelem atomi. Viszont több lánc van. Részláncokat alakítok ki. Egy részláncba összefûzöm az azonos csoportba esõ elemeket. Minden adatelem pontosan egy részláncban szerepel.
Több fej van (annyi, ahány részlánc van).
c.) (amit mindenki ismer)
A társzerkezet három részbõl áll.
-adatrész (adatelemet, vagy egy listafejet tartalmaz)
-mutatórész
-a harmadik rész jelöli, hogy a társzerkezet adatelemet, vagy fejet tartalmaz. (minõsítõ rész)
Engem az érdekel, hogy milyen lépések kellenek az a.) típus leprogramozásához. (Bármilyen durva algoritmus megteszi, amire már tudok építeni.)Ezek olyan listaelemek, amelyek egyszerre több adatot várnak, általában tetszõleges kombinációban. pl.:
A felhasználó választhat, hogy melyik adatokat adja meg:
Két befogó
Egy befogó és egy átfogó
Egy befogó és a mellette lévõ szög
Egy befogó és a szemben lévõ szög
Az átfogó és az egyik mellette lévõ szögA program kiírja képernyõre a kívánt adatokat:
a három oldal (a, b, c)
az átfogón fekvõ két szög (?, ?)
kerület és területAmit mondasz, az nem a változó rekord?
Engem a multilista programozástechnikai szempontból érdekel.
/ az, hogy hogyan építsem fel a programomban /….
Jézusom, milyen hülyén fogalmaztam meg! 😆
Nincs a vinyó rackben. 80GB-os vinyót nem hurcolnék magammal, sajnos még nem állok úgy anyagilag. Sajnos… ❗
-
SzerzőBejegyzés
legutóbbi hsz