Forum Sveta kompjutera

Nazad   Forum Sveta kompjutera > Test Run > Programiranje
Uputstvo Članstvo Kalendar Današnje poruke Pretraži

Programiranje Programski jezici, tehnike, alatke...

Odgovor
 
Alatke vezane za temu Vrste prikaza
Stara 26.5.2013, 20:42   #1
CptnMunch
Novi član
 
Član od: 26.5.2013.
Poruke: 1
Zahvalnice: 0
Zahvaljeno 0 puta na 0 poruka
Određen forumom Mala pomoc u vezi programa

Pozdrav, imam problem u vezi programa koji treba da radi sledece stvari:
Da kreira i ažurira sadržaj tekstualne datoteke (npr. knjige.txt) sa sledećim podacima: ime_knjige, autor, izdavac i god_izdavanja, i prikazuje na ekranu sledeće opcije:
1. Dodavanje knjige katalogu
2. Pronalazenje knjige na osnovu imena
3. Prikaz na ekranu kataloga
4. Kraj rada (sa cuvanjem izmena)
Vec sam taj program odradio i ovako izgleda:

Kod:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>

struct knjiga{
	char ime_knjige[15],autor[15],izdavac[20];
	int god_izdavanja;
	struct knjiga *sledeca;
}*prva,*tekuca;

void ucitaj(char *fajl,int *br);
void dodavanje(void);
void nadji(void);
void izlaz(char *fajl);

main()
{
	char odg,ime_fajla[40];
	int poc=1;

	prva=malloc(sizeof(struct knjiga));
	tekuca=prva;

	printf("\nUnesite ime fajla: "); //fajl treba da je prethodno kreiran
	gets(ime_fajla);
	
	ucitaj(ime_fajla,&poc);
	tekuca->sledeca=NULL;

	do{
		printf("\nD. dodavanje knjige katalogu\nP. pronalazi u katalogu na osnovu imena\nI. izlaz (sa cuvanjem izmena)\t");
		fflush(stdin);
		odg=toupper(getchar());

		if(odg=='D')
		{
			if(poc!=1)
			{
				if((tekuca->sledeca=malloc(sizeof(struct knjiga)))==NULL)
				{
					printf("\n\nNE MOGU DA DODELIM MEMORIJU!!!");
					exit(1);
				}
				tekuca=tekuca->sledeca;
			}

			dodavanje();

			poc=0;
			tekuca->sledeca=NULL;
		}
		if(odg=='P')
			nadji();
		if(odg=='I')
			izlaz(ime_fajla);
	}while(odg!='I');
}

void ucitaj(char *fajl,int *br)
{
	FILE *f;
	char ime_knjige[15],autor[15],izdavac[20];
    int god_izdavanja;
	if((f=fopen(fajl,"r"))==NULL)
	{
		fprintf(stderr,"\n\nFAJL NEPOSTOJI!!!");
		exit(1);
	}

	while(1)
	{
		ime_knjige[0]='\0';
		fscanf(f,"%s",ime_knjige);
		if(ime_knjige[0]=='\n' || ime_knjige[0]=='\0')
			break;
		fscanf(f,"%s",autor);
        fscanf(f,"%s",izdavac);
        fscanf(f,"%d",&god_izdavanja);
		if(*br!=1)
		{
			if((tekuca->sledeca=malloc(sizeof(struct knjiga)))==NULL)
			{
				printf("\n\nNE MOGU DA DODELIM MEMORIJU!!!");
				exit(1);
			}
			tekuca=tekuca->sledeca;
		}
		strcpy(tekuca->ime_knjige,ime_knjige);
		strcpy(tekuca->autor,autor);
        strcpy(tekuca->izdavac,izdavac);
        tekuca->god_izdavanja=god_izdavanja;
		*br=0;
	}
	fclose(f);
}

void dodavanje(void)
{
	fflush(stdin);
	printf("\nUnesite ime knjige: ");
	gets(tekuca->ime_knjige);
	printf("\nUnesite autora: ");
	gets(tekuca->autor);
	printf("\nUnesite izdavaca: ");
	gets(tekuca->izdavac);
	printf("\nUnesite godinu izdavanja: ");
	scanf("%d",&tekuca->god_izdavanja);
	fflush(stdin);
}

void nadji(void)
{
	int ima=0;
	char ime_knjige[15];
	struct knjiga *trazi;

	trazi=prva;
	if(trazi->sledeca==NULL)
		printf("\nKatalog JE PRAZAN!!!");
	else
	{
		fflush(stdin);
		printf("\nUnesite ime knjige: ");
		gets(ime_knjige);

		printf("\n================= ADRESE =================");
		while(trazi!=NULL)
		{
			if(strcmp(trazi->ime_knjige,ime_knjige)==0)
			{
				printf("\n%s %s %s %d",trazi->ime_knjige,trazi->autor,trazi->izdavac,trazi->god_izdavanja);
				ima=1;
			}
			trazi=trazi->sledeca;
		}
		if(ima==0)
			printf("\nNEMA Knjige!!!");
		printf("\n==========================================\n\n");
	}
}

void izlaz(char *fajl)
{
	FILE *f;
	struct knjiga *trazi;
	trazi=prva;

	if(trazi->sledeca==NULL)
		printf("\nKatalog JE PRAZAN!!!");
	else
	{
		if((f=fopen(fajl,"w"))==NULL)
		{
			fprintf(stderr,"\n\nNE MOGU DA OTVORIM FAJL!!!");
			exit(1);
		}
		while(trazi!=NULL)
		{
			fprintf(f,"%s %s %s %d\n",trazi->ime_knjige,trazi->autor,trazi->izdavac,trazi->god_izdavanja);
			trazi=trazi->sledeca;
		}
		fclose(f);
	}
}
Unapred se izvinjavam ako ovakav prikaz izgleda neuredno.
Problem u programu je sto nece da sacuva unete podatke...ako bi neko mogao da pomogne bio bi mu mnogo zahvalan, hvala unapred!

Poslednja ispravka: Andross (26.5.2013 u 23:06) Razlog: code tag postoji
CptnMunch je offline   Odgovor sa citatom ove poruke
Odgovor

Bookmarks sajtovi


Vaš status
Ne možete postavljati teme
Ne možete odgovarati na poruke
Ne možete slati priloge uz poruke
Ne možete prepravljati svoje poruke

BB kod: uključeno
Smajliji: uključeno
[IMG] kod: uključeno
HTML kod: isključeno


Slične teme
tema temu započeo forum Odgovora Poslednja poruka
Pomoc oko programa!!! Number3 Programiranje 5 7.6.2012 23:58
Pomoc oko programa u C-u absonic Programiranje 28 21.5.2012 23:27
Mala pomoc oko programa Sony sound forge perakle Foto i audio/video 2 15.11.2011 16:59
Mala pomoc u vezi IntelliSense-a Dorfeus Programiranje 5 6.11.2010 20:55
Mala pomoc (IP finder na MSN-u) Denisda Internet tehnologije 0 24.4.2006 11:42


Sva vremena su po Griniču +2 h. Sada je 4:12.


Powered by vBulletin® verzija 3.8.7
Copyright ©2000–2024, vBulletin Solutions, Inc.
Hosted by Beograd.com