pomoc s programom SURNE

Programovacie jazyky, rady, poradňa...
drummer87
Novice
Novice
Príspevky: 7
Registrovaný: 07 dec 2009, 10:49
Kontaktovať používateľa:

pomoc s programom SURNE

Príspevok od používateľa drummer87 »

pls neviem si rady s projektom, resp. s jeho zaciatkom. mam nacitat hodnoty z txt suboru do dynamicky spajaneho zoznamu struktur a potom to vypisat na obrazovku. vsetko dalsie by som uz nejak spravil, ale bez tohto sa dalej nepohnem. Prosim poradte :(
ukazka txt suboru:

$
osobny automobil
Ferrari
Autobazar Pestovatelska 4 Bratislava
68957
2000
udrziavane cervene dvojdverove
$
kamion
Renault magnum
AUTO Modranska 5 Senec
28000
2006
po havarii opraveny v dobrom stave


vopred dakujem
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

nenapísal si v akom jazyku
drummer87
Novice
Novice
Príspevky: 7
Registrovaný: 07 dec 2009, 10:49
Kontaktovať používateľa:

Príspevok od používateľa drummer87 »

c++

//autoeditácia príspevku ( 07 Dec 2009, 11:01 )
c++
picuge
Expert
Expert
Príspevky: 167
Registrovaný: 17 dec 2005, 20:38
Bydlisko: Bratislava/Martin

Príspevok od používateľa picuge »

Minuly rok som robil podobny projekt len v tom textovom subore boli & namiesto $ a tema bola trochu ina:

Kód: Vybrať všetko

&
rodinny dom 3+1
Pezinok
Modranska
130
72550
starsi udrziavany rodinny dom na pozemku 970 m2
&
rodinny dom 2+1
Pezinok
Modranska
130
725500
starsi udrziavany rodinny dom na pozemku 970 m2
a ja som to spravil takto:

Kód: Vybrať všetko

/*PSS 13,FIIT STU,7.12.2008*/
#include <stdio.h>
#include <stdlib.h>

typedef struct ponuka{
	char nazov[101];
	char miesto[51];
	char ulica[51];
	int rozloha;
	int cena;
	char popis[201];
	struct ponuka *dalsia;
}PONUKA;
PONUKA *N(PONUKA *p1){

	int i=0,k=0,j;
	FILE *f;
	char s;
	PONUKA *p2=NULL;
	
	if (p1!=NULL) 
		while(p1!=NULL) {
			p2=p1;
			p1=p1->dalsia;
			free(p2);}
		p1=NULL;
	if ((f = fopen("REALITY.txt","r"))==NULL)	printf("Zaznamy neboli nacitane\n");
	else{
	p1 = (PONUKA *) malloc(sizeof(PONUKA));
	p2=p1;
	if ((s=fgetc(f))=='&'){	
		do{			
			s=fgetc(f);
			j=0; while((s=fgetc(f))!='\n') {p1->nazov[j]=s; j++;};p1->nazov[j]='\0';
			j=0; while((s=fgetc(f))!='\n') {p1->miesto[j]=s; j++;};p1->miesto[j]='\0';
			j=0; while((s=fgetc(f))!='\n') {p1->ulica[j]=s; j++;};p1->ulica[j]='\0';
			fscanf(f,"%d",&p1->rozloha);
			fscanf(f,"%d",&p1->cena);
			s=fgetc(f);
			j=0; while((s=fgetc(f))!='\n') {p1->popis[j]=s; j++;};p1->popis[j]='\0';
			i++;
			s=fgetc(f);
			if (s=='&') {
				p1->dalsia=(PONUKA *) malloc(sizeof(PONUKA));
				p1=p1->dalsia;}
			else {k=1;p1->dalsia=NULL;}
			}while (k==0);}
	fclose(f);
	printf("Nacitalo sa %d zaznamov\n",i);
	}
	return p2;
}
Neviem ci to funguje presne ako ma, ale tak aspon ako nejaka priblizna inspiracia :D ...a ak je to na FIIT, tak tam radsej daco pomen nech ti to nevyhodnotia ako plagiat. A teraz by som to robil uz asi trochu inak, ale nechce sa mi to prerabat :D
drummer87
Novice
Novice
Príspevky: 7
Registrovaný: 07 dec 2009, 10:49
Kontaktovať používateľa:

Príspevok od používateľa drummer87 »

diki moc :) pozrem si to a urcite mi to pomoze dostat sa dalej :)
picuge
Expert
Expert
Príspevky: 167
Registrovaný: 17 dec 2005, 20:38
Bydlisko: Bratislava/Martin

Príspevok od používateľa picuge »

a este male upozornenie...daj pozor na C / C++ ;)
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Príspevok od používateľa BX »

Mozem taku pomimo otazocku?
Konkretne v tomto programe by bol jediny rozdiel medzi C a C++ v pouziti prudov (cout, cin)?

// Jaj jasne on tam ma fscanf, to som si nevsimol :D Tak dakujem :)
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

aj práci so súbormi, c++ nepoužíva fopen a podobne ale fstream-y a zapisuje do nich (číta z ních) cez preťažený operátor << (prípadne >>)
drummer87
Novice
Novice
Príspevky: 7
Registrovaný: 07 dec 2009, 10:49
Kontaktovať používateľa:

Príspevok od používateľa drummer87 »

pls neviem, co konkretne maju robit prikazy "P" ...teda ja mam pocas programu zadat hodnoty a ono sa to potom nacita na tu konretnu poziciu na ktoru ma, alebo to zadavam v programe a P negeneruje vlastne ziaden vystup, len si zadam tu poziciu?? ci??

a tiez 'A' ...zadam znacku, to je jasne...a potom co myslia tym, ze sa aktualizuju udaje zaznamov tych konkretnych znaciek?? ze ich mozem editovat priamo v programe??

viem, som uplny nemlehet, ale fakt neviem ako to myslia

uloha znie takto:

Napíšte program, ktorý bude pracovať so záznamami v dynamickom spájanom zozname.
Záznamy uložené v súbore AUTA.TXT budú predstavovať ponuku autobazárov
v internetovom obchode. Pred každým záznamom v súbore bude jeden riadok obsahujúci
znak $, ktorý záznamy viditeľne oddelí. Jednotlivé položky záznamu budú v súbore
umiestnené vždy v samostatnom riadku. Význam položiek záznamu bude nasledujúci:
kategoria (maximálne 50 znakov)
znacka (maximálne 50 znakov)
predajca (maximálne 100 znakov)
cena (celé číslo)
rok_vyroby (celé číslo)
stav_vozidla (maximálne 200 znakov)
Ukážka obsahu súboru AUTA.TXT:
$¿
osobny automobil¿
Ferrari¿
Autobazar Pestovatelska 4 Bratislava¿
68957¿
2000¿
udrziavane cervene dvojdverove¿
$¿
kamion¿
Renault magnum¿
AUTO Modranska 5 Senec¿
28000¿
2006¿
po havarii opraveny v dobrom stave¿
Program bude vykonávať príkazy načítané zo štandardného vstupu. Každý príkaz bude
predstavovať veľké písmeno nasledované koncom riadku.
· N – je príkaz na načítanie záznamov o autách zo súboru AUTA.TXT do spájaného
zoznamu štruktúr.
Ak zoznam predtým existoval, je potrebné uvoľniť pamäť. Ak nie je možné súbor
otvoriť, program vypíše správu Zaznamy neboli nacitane ukončenú znakom
konca riadku. Ak sa podarilo záznamy načítať, vypíše správu Nacitalo sa n
zaznamov ukončenú znakom konca riadku, pričom n znamená počet načítaných
záznamov.
· V – je príkaz na výpis celého spájaného zoznamu záznamov.
Formát výpisu je nasledujúci. Pred každým záznamom je uvedené číslo záznamu
(poradie od začiatku zoznamu, začínajúce číslom 1) nasledované bodkou a znakom
konca riadku. Potom nasleduje výpis záznamu, pričom názov položky (bez diakritiky)
je nasledovaný dvojbodkou, medzerou, hodnotou položky a znakom konca riadku. Ak
zoznam neobsahuje záznamy, pri tejto voľbe program negeneruje žiaden výstup.
Ukážka výstupu pre dva vyššie uvedené záznamy:
1.¿
kategoria: osobny automobil¿
znacka: Ferrari¿
predajca: Autobazar Pestovatelska 4 Bratislava¿
cena: 68957¿
rok_vyroby: 2000¿
stav_vozidla: udrziavane cervene dvojdverove¿
2.¿
kategoria: kamion¿
znacka: Renault magnum¿
predajca: AUTO Modranska 5 Senec¿
cena: 28000¿
rok_vyroby: 2006¿
stav_vozidla: po havarii opraveny v dobrom stave¿
· P – je príkaz na pridanie záznamu do dynamického zoznamu.
Príkaz je v ďalšom riadku nasledovaný celým číslom p > 0 vyjadrujúcim pozíciu
(počítanú od 1), na ktorú sa má záznam pridať (záznam z pozície p sa posunie na
pozíciu p+1). Potom nasleduje ďalších 6 riadkov, každý ukončený znakom konca
riadku a obsahujúcim položky záznamu v poradí v akom sú aj v súbore AUTA.TXT.
Ak pozícia p v zozname neexistuje, záznam sa pridá na koniec zoznamu. Pri tejto
voľbe program negeneruje žiaden výstup.
· Z – je príkaz na zmazanie záznamov o autách podľa značky auta.
Riadok s príkazom Z je nasledovaný riadkom obsahujúcim značku auta a ukončený
znakom konca riadku. Program vymaže všetky záznamy obsahujúce zadaný názov
auta, pričom ignoruje rozdiely vo veľkých a malých písmenách. Ak používateľ zadá
značku auta napr. nDa a zoznam obsahuje záznamy so značkou Honda alebo
HYUNDAI, tento príkaz uvedené záznamy vymaže. Pri tomto príkaze program vypíše
správu Vymazalo sa n zaznamov, kde n je počet vymazaných záznamov. Správa
je ukončená znakom konca riadku.
· H - umožní používateľovi vyhľadať a vypísať všetky položky záznamu podľa
ceny ponuky.
Riadok s príkazom H je v ďalšom riadku nasledovaný celým číslom c vyjadrujúcim
cenu ponuky. Po zadaní tohto príkazu program vypíše všetky ponuky, ktorých cena je
menšia alebo rovná zadanej hodnote c. Formát výpisu je rovnaký ako pri príkaze V aj
s číslami záznamov, pričom vypísané záznamy sú číslované od 1 po n, kde n je počet
vypísaných záznamov. Záznamy sú vypísané v poradí v akom sa vyskytujú
v spájanom zozname. Ak záznam s ponukou, ktorej cena je menšia, alebo rovná c
neexistuje, program vypíše správu V ponuke su len auta s vyssou cenou
Správa je ukončená znakom konca riadku.
· A – je príkaz na aktualizáciu (zmenu) záznamu podľa značky auta.
Riadok s príkazom A je nasledovaný riadkom obsahujúcim značku auta a ukončený
znakom konca riadku. Potom nasleduje 6 riadkov obsahujúcich aktualizované
hodnoty záznamu, každý ukončený znakom konca riadku. Vždy je potrebné zadať
všetky položky záznamu. Program aktualizuje všetky záznamy obsahujúce zadanú
značku auta, pričom ignoruje rozdiely vo veľkých a malých písmenách (rovnako ako
pri príkaze Z). Pri tomto príkaze program vypíše správu Aktualizovalo sa n
zaznamov, kde n je počet zmenených záznamov. Správa je ukončená znakom konca
riadku.
· K – je príkaz na ukončenie programu.
Ak spájaný zoznam existoval, treba uvoľniť pamäť. Pri tejto voľbe program
negeneruje žiaden výstup.


vopred dakujem :)
picuge
Expert
Expert
Príspevky: 167
Registrovaný: 17 dec 2005, 20:38
Bydlisko: Bratislava/Martin

Príspevok od používateľa picuge »

ono kes pustis progrom tak nespravi nic, len ked stlacis N, tak nacita zaznamy, ked potom P, tak bude cakat cislo a tie veci, ktorymi mas vyplnit info o tom jednom aute...vystup ziaden...vystup uvidis len ak das po tom vypisat cez V.
Pri prikaze A len prehladavas postupne znacky a ked sa stringy zhoduju tak ten v tom zazname prepises novymi zadanymi udajmi.
drummer87
Novice
Novice
Príspevky: 7
Registrovaný: 07 dec 2009, 10:49
Kontaktovať používateľa:

Príspevok od používateľa drummer87 »

ok diki moc :)
to "P" som tak aj spociatku pochopil..neviem preco sa mi to potom zdalo divne :D
a pri tom "A"..cize je to vlastne podobne "P", len s tym rozdielom ze prepisujem uz existujuce udaje..takze zase pocas programu zadavam hodnoty..a vystup bude cislo kolko zaznamov sa prepisalo.

OK tak idem teda na to..uff to bude dlha noc :D


..a este taky detajl..pri zapisovani, alebo prepisovani hodnot mam pisat priamo tie udaje, alebo tam predto mam aj pisat ze:
kategoria:
znacka:
predajca:
...........


???
picuge
Expert
Expert
Príspevky: 167
Registrovaný: 17 dec 2005, 20:38
Bydlisko: Bratislava/Martin

Príspevok od používateľa picuge »

To ci tam pri zapisovani das to "kategoria:",...alebo nie je len na tebe, aj ked v zadani to tam spomenute nemas, takze by som to tam nedaval, sam budes mat menej roboty, ked to tam nebude, tvar sa ako keby si dalej nacitaval zo suboru ;)
drummer87
Novice
Novice
Príspevky: 7
Registrovaný: 07 dec 2009, 10:49
Kontaktovať používateľa:

Príspevok od používateľa drummer87 »

ok diki :)
Napísať odpoveď