c++ nefunkčný program

Programovacie jazyky, rady, poradňa...
feromakovi
Expert
Expert
Príspevky: 165
Registrovaný: 24 okt 2008, 14:16
Bydlisko: Bánovce nad Bebravou

c++ nefunkčný program

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

Zdravím, ešte sa len učím a už mám problém:
zo vstupu textového súbora:

Kód: Vybrať všetko

1760
Jozef Maly
0
1078.88
11112009

1799
Maria Krasna
1
636.98
12101999
mám vypísať na obrazovku niečo takého:

Kód: Vybrať všetko

osobne cislo zamestnanca: 1760
meno priezvisko: Jozef Maly
administrativa/vyrobny pracovnik: 0
plat: 1078.88
datum: 11112002

osobne cislo zamestnanca: 1799
meno priezvisko: Maria Krasna
administrativa/vyrobny pracovnik: 1
plat: 636.98
datum: 12101999
a robil som to takto:

Kód: Vybrať všetko

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int i,slovo[30],p,a;
	char ch;
	FILE *f;
	//od tadeto bude prvá funkcia
	for(i=0;i<=29;i++) slovo[i]=0;
	if((f=fopen("ZAMESTNANCI.TXT","r"))==NULL)
	{
		printf("Neotvoreny subor\n");
		return ;
	}
	else 
	{
		p=0;i=0;
		while((c=getc(f))!=EOF)
		{
			if(c!='\n')
			{	
				slovo[i]=c;
				i++;
			}
			else 
			{
				p++;
				if(p=1) printf("osobne cislo zamestnanca: ");
				if(p=2) printf("meno priezvisko: ");
				if(p=3) printf("administrativa/vyrobny pracovnik: ");
				if(p=4) printf("plat: ");
				if(p=5)
				{
					printf("datum: ");
					p=0;
				}
				for(a=i;a>=0;a--) printf("%d",slovo[a]);
				putchar('\n');
				i=0;
			}

		}
	}
	fclose(f);
	return 0;
}
používam microfost visual 2008, nemám žiadnu chybu nič a program sa mi len spustí nič nevypíše a hneď skončí, skúšal som ho aj zabrzdiť príkazom getchar(); ale aj keď som ich tam dal milión stále to isté.
Ak by ste mi niekto pomohol tak by som poprosil len zistiť že kde mám tú chybu lebo mne to nieje vôbec jasné nerozumiem kde je chyba. Algoritmus by som chcel zmeniť len minimálne ak sa to inak nebude dať.
Ďakujem.
c-ice
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 475
Registrovaný: 04 mar 2008, 15:18
Kontaktovať používateľa:

Príspevok od používateľa c-ice »

1. C a nie C++
2. skusal si krokovat program ?
3. http://people.tuke.sk/igor.podlubny/C/Kap8.htm
4. moc sa mi to nepozdava čo tam maš navrhnute
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 »

kto ti povedal že tam nemáš žiadnú chybu? Máš tam plno logických chýb, napríklad to šantenie s premennou p (ktorá je tam vlastne úplne zbytočná) a postupné prepisovanie jej hodnoty v podmienkach ktoré sa vždy splnia
feromakovi
Expert
Expert
Príspevky: 165
Registrovaný: 24 okt 2008, 14:16
Bydlisko: Bánovce nad Bebravou

odpoveď

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

no to že nemám chybu vypísal microsoft visual studio napísalo 0 errors tak myslel som že tam nemám chybu.
a tú premennú p používam nato aby som rozlíšil kedy sa má ktorá veta vypísať a hneď za ňou to čo treba o každom tom zamestnancovi. tiež si myslím že tam mám nejako veľa premenných ale neviem to asi spraviť s menej premennými. Ale celkovo nerozumiem tomu prečo sa nič nevypíše keďže by sa malo?? nerozumiem tomu...
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 »

spusti to z cmd, alebo si daj na koniec brakpoint. A to že ti komplátor nevypíše chybu znamená že tam nie sú syntaktické chyby. Ja ti ale píšem že tam máš logické chyby a nerobí to to, čo by si chcel
c-ice
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 475
Registrovaný: 04 mar 2008, 15:18
Kontaktovať používateľa:

Príspevok od používateľa c-ice »

ak si si pozrel link ktory som ti tam napísal myslým že riešenie ti uz musi byt jasné čitat po riadkoch a ideš :) vypysovat asi takto ("osobne cislo: %s",pID)
feromakovi
Expert
Expert
Príspevky: 165
Registrovaný: 24 okt 2008, 14:16
Bydlisko: Bánovce nad Bebravou

súrne

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

zdravím prosím Vás mohol by mi niekto skontrolovať zdroják?
vsutp a výstup ostavajú.

Kód: Vybrať všetko

void vypis(FILE *f)
{
	int cis,poz,datum,c;
	double plat;
	char meno[30];
	while((c=getc(f))!=EOF)
	{
		ungetc(c,f);
		fscanf(f,"%d",&cis);printf("osobne cislo zamestnanca: %d\n",cis);
		fgets(meno,30,f);printf("meno priezvisko: ");puts(meno);
		fscanf(f,"%d",&poz);printf("administrativa/vyrobny pracovnik: %d\n",poz);
		fscanf(f,"%lf",&plat);printf("plat: %.2lf\n",plat);
		fscanf(f,"%d",&datum);printf("datum: %d\n",datum);
		putchar('\n');
		if((c=getc(f))==EOF) ungetc(c,f);
	}
	
}
súbor mám otvorený na čítanie. vypisuje mi to proste bludy, nieje to také aké potrebujem a podľa toho čo som googlil by to malo byť v poriadku. Myslím že chyba nastane pri výpise toho poľa meno
mohol by mi niekto poradiť??
rackom
Medium Star
Medium Star
Príspevky: 307
Registrovaný: 08 aug 2005, 5:37

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

FIIT - 1.rocnik Bc. zeby? :P
feromakovi
Expert
Expert
Príspevky: 165
Registrovaný: 24 okt 2008, 14:16
Bydlisko: Bánovce nad Bebravou

:d

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

áno jasné ale už som to vyriešil nieje po prvom riadku načítaný znak '\n'
keď tam dám načítanie tak to krásne funguje :D
inak všetko samí fiitkári :D
Napísať odpoveď