Стани премиум член и добиј попуст на 2000+ производи и куп други бенефити!

Помош за семинарска во С++

angelovski1

read-only
24 април 2012
3
0
Ако може да го дополни некој кодот така да работи со датотека . Внесените податоци да се зачувуваат во Notepad на локација D:\\CDteka.text и со секое стартување на програмата(пр. ако треба да се пребарува некој филм)податоците да се читаат од CDteka.text.
Благодарам однапред.

Кодот гласи:
#include <cstdio>
#include <string.h>
#define MAXVEL 100

struct CDa {
char naslov[30];
char reziser[30];
char glumec[30];
char zanr[15];
int godina;
};

void sortiraj(struct CDa* niza, int vel)
{
int i,j;
for (i=0; i<vel-1; i++)
for (j=i+1; j<vel; j++)
{
int nasl = strcmp(niza.naslov,niza[j].naslov);
int rez = strcmp(niza.reziser,niza[j].reziser);
int glum = strcmp(niza.glumec,niza[j].glumec);
int zan = strcmp(niza.zanr,niza[j].zanr);

if (nasl>0 || (nasl==0 && rez>0))
if (glum>0 || (glum==0 && zan>0))
{
struct CDa pom=niza;
niza=niza[j];
niza[j]=pom;
}
}
}

void vnes(struct CDa* niza, int* vel)
{
struct CDa a;

if (*vel>=MAXVEL)
{
printf("Nema mesto!\n");
return;
}
gets(a.naslov);
printf ("vnesi naslov: ");
gets(a.naslov);
printf ("Vnesi reziser: ");
gets(a.reziser);
printf ("Vnesi glumec: ");
gets(a.glumec);
printf ("Vnesi zanr: ");
gets(a.zanr);
printf("Vnesi godina na izdavanje:");
scanf("%d",&a.godina);
niza[(*vel)++]=a;
sortiraj(niza,*vel);
printf ("\n");
}

void ispis(struct CDa* niza, int vel)
{
int i;
for (i=0; i<vel; i++)
printf ("%d. Naslov:%s\n Reziser:%s\n Glaven glumec:%s\n Zanr: %s\n Godina: %d\n", i+1, niza.naslov, niza.reziser, niza.glumec, niza.zanr, niza.godina);
printf ("\n");
}

void prebaraj(struct CDa* niza, int vel)
{
int tip,i,tel,pronadjen=0;
char prebaraj[15];
printf ("\n Vnesi 1 za prebaruvanje po naslov ,2 za reziser i 3 za glumec: ");
scanf("%d",&tip);
if (tip==1)
{
printf("Vnesi baran naslov: ");
scanf("%s",prebaraj);
for (i=0; i<vel; i++)
{
if ((strcmp(prebaraj,niza.naslov)==0))
{
printf ("%d. Naslov:%s\n Reziser:%s\n Glaven glumec:%s\n Zanr: %s\n Godina: %d\n", i+1, niza.naslov, niza.reziser, niza.glumec, niza.zanr, niza.godina);
pronadjen=1;
}
}
}
if (tip==2)
{
printf("Vnesi baran reziser: ");
scanf("%s",prebaraj);
for (i=0; i<vel; i++)
{
if ((strcmp(prebaraj,niza.reziser)==0))
{
printf ("%d. Reziser:%s\n Naslov:%s\n Glaven glumec:%s\n Zanr: %s\n Godina: %d\n", i+1, niza.reziser, niza.naslov, niza.glumec, niza.zanr, niza.godina);
pronadjen=1;
}
}
}
if (tip==3)
{
printf("Vnesi baran glumec: ");
scanf("%s",prebaraj);
for (i=0; i<vel; i++)
{
if ((strcmp(prebaraj,niza.glumec)==0))
{
printf ("%d. Glaven glumec:%s\n Naslov:%s\n Reziser:%s\n Zanr: %s\n Godina: %d\n", i+1, niza.glumec, niza.naslov, niza.reziser, niza.zanr, niza.godina);
pronadjen=1;
}
}
}
if (pronadjen==0)
{
printf ("Ne e pronajden nieden rezultat.\n");
}

int pronajden;
if(pronajden==0)
{
printf ("Ne e pronajden nieden rezultat .\n\n");
}
printf ("\n");
}

void listanjesporedzanr(struct CDa* niza, int vel)
{
int stip,i;
char prebaraj[15];

printf ("\n Vnesi 1 za prebaruvanje po zanr: ");
scanf("%d",&stip);
if (stip==1)
{
printf("Vnesi baran zanr: ");
scanf("%s",prebaraj);
}
else
{
printf("Ne vnesvte znak 1.");
}
for (i=0; i<vel; i++)
{
if ((strcmp(prebaraj,niza.zanr)==0))
{
printf ("Filmovi spored toj zanr se: %s,\n\n", niza.naslov);
}
}
}

int main(int* argc,char *args[])
{
struct CDa imenik[MAXVEL];
int velicina=0,izbor=-1;

while (izbor!=0)
{
printf ("Pritisni 1 za vnes, 2 za ispis, 3 za prebaruvanje, 4 za listanje spored zanr, 0 za izlez : ");
scanf ("%d", &izbor);
switch (izbor)
{
case 1:
vnes(imenik,&velicina);
break;
case 2:
ispis(imenik,velicina);
break;
case 3:
prebaraj(imenik,velicina);
break;
case 4:
listanjesporedzanr(imenik,velicina);
break;
case 0:
break;
default:
printf ("Pogresen vnes !\n");
}
}

return 0;
}
 

angelovski1

read-only
24 април 2012
3
0

незнам како треба да се поврзе кодот од програмата со фајлот(CDteka.text) не ни е објаснето на факултет тој дел со датотеки а професорката бара семинарската да работи со датотека, па ако знаеш и ако сакаш да помогнеш ...
 
За да работиш со датотека треба да провериш дали имаш пермисии да ја отвориш , ја отвараш и после вршиш операции и ја затвораш. Провери ги следните линкови :
http://www.cplusplus.com/doc/tutorial/files/
http://www.cs.hmc.edu/~geoff/classes/hmc.cs070.200109/notes/io.html
http://math.hws.edu/eck/cs225/s03/files_and_strings.html
http://www.tutorialspoint.com/cplusplus/cpp_files_streams.htm

Имам една забелешка, нели ти е полесно со класи да работиш?
 

EvIL_GuY

read-only
9 октомври 2008
23
1
Разликата помеѓу класа и структура во ц++ е тоа што во класата променливите, функциите... под дефолт се private додека во структурата се public па така да ако знаеш што правиш односно ако правилно ги користиш зборовите за заштита овие две се исти.
 

angelovski1

read-only
24 април 2012
3
0
Пробав да го написам делот со датотеката ама неработи ќе сака ли некој да го прегледа кодот и да ми каже каде е грешката. Значи кодот се компајлира ,останатиот дел од кодот работи, само не се запишуваат внесените податоци во CD-Teka.txt т.с не се создава тој фајл CD-Teka.txt.

#include <fstream>
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <stdio.h> //standardna i/o biblioteka
#include <string.h> //biblioteka za rabota so stringovi
#define MAXVEL 100 //Definiranje na maks golemina na nizi vo prog.
using namespace std;
const char record_marker[] = "-----";

struct CDa {
char naslov[30];
char reziser[30];
char glumec[30];
char zanr[15];
int godina;
};

void procitaj(struct CDa imenik[], int& broj)
{

fstream file;

file.open ("CD-Teka.txt", ios::in);

if (file.good())
{
while (true)
{

char marker[256];

file.getline(marker, 256);

if (file.eof())
{
break;
}

if (strcmp(marker, record_marker) != 0)
{
cout << "Oshtetena vlezna datoteka, izbrishete ja i restartirajte ja programata\n";
break;
}


CDa film ;
char strGodina[5];

file.getline(film.naslov, 50);
file.getline(film.reziser, 50);
file.getline(film.glumec, 50);
file.getline(film.zanr, 50);
file.getline(strGodina, 50);

film.godina = atoi(strGodina);

imenik[broj++] = film;
}

file.close();
}
else
{
cout << "Greshka pri otvaranjeto na vleznata datoteka. Dali postoi? \n";
file.close();
}
}

void zapisi(struct CDa* film)
{

fstream file;

file.open ("CD-Teka.txt", ios::eek:ut | ios::app);
if(file)
{
file << record_marker << "\n";
file << (*film).naslov<< "\n";
file << (*film).reziser << "\n";
file << (*film).glumec << "\n";
file << (*film).zanr << "\n";
file << (*film).godina << "\n";
}
else
cout <<"Greshka pri otvaranje na datotekata !\n";

file.close();

}

void sortiraj(struct CDa* niza, int vel) /*sortiraj so bubble sort pri toa primi max broj na gol na niz i pokazuvac kon nizata za da se izmini sekoj clen na nizata*/
{
int i,j;
for (i=0; i<vel-1; i++)
for (j=i+1; j<vel; j++)
{
int nasl = strcmp(niza.naslov,niza[j].naslov);
int rez = strcmp(niza.reziser,niza[j].reziser);
int glum = strcmp(niza.glumec,niza[j].glumec);
int zan = strcmp(niza.zanr,niza[j].zanr);

if (nasl>0 || (nasl==0 && rez>0))
if (glum>0 || (glum==0 && zan>0))
{
struct CDa priv=niza;
niza=niza[j];
niza[j]=priv;
}
}
}
void vnes(struct CDa* niza, int* vel) /*Otkako ke bide vnesena nizata sortiraj ja*/
{
struct CDa a;
if (*vel>=MAXVEL)
{
printf("Nema mesto!\n");
return;
}
gets(a.naslov);
printf ("vnesi naslov: ");
gets(a.naslov);
printf ("Vnesi reziser: ");
gets(a.reziser);
printf ("Vnesi glumec: ");
gets(a.glumec);
printf ("Vnesi zanr: ");
gets(a.zanr);
printf("Vnesi godina na izdavanje:");
scanf("%d",&a.godina);
niza[(*vel)++]=a;
sortiraj(niza,*vel);
printf ("\n");
}
void ispis(struct CDa* niza, int vel) /*ispisuvanjeto se pravi so eden for pri sto se izminuvaat site clenovi na nizata*/
{
int i;
for (i=0; i<vel; i++)
printf ("%d. Naslov:%s\n Reziser:%s\n Glaven glumec:%s\n Zanr: %s\n Godina: %d\n", i+1, niza.naslov, niza.reziser, niza.glumec, niza.zanr, niza.godina);
printf ("\n");
}
void prebaraj(struct CDa* niza, int vel) /*Ovaa funkcija se izvrsuva edna na pocetokot i dava izgled na ednostanvo meni kade sto korisnikot ke izbira brojki kako opcii */
{
int tip,i,tel,pronadjen=0;
char prebaraj[15];
printf ("\n Vnesi 1 za prebaruvanje po naslov ,2 za reziser i 3 za glumec: ");
scanf("%d",&tip);
if (tip==1)
{
printf("Vnesi baran naslov: ");
scanf("%s",prebaraj);
for (i=0; i<vel; i++)
{
if ((strcmp(prebaraj,niza.naslov)==0))
{
printf ("%d. Naslov:%s\n Reziser:%s\n Glaven glumec:%s\n Zanr: %s\n Godina: %d\n", i+1, niza.naslov, niza.reziser, niza.glumec, niza.zanr, niza.godina);
pronadjen=1;
}
}
}
if (tip==2)
{
printf("Vnesi baran reziser: ");
scanf("%s",prebaraj);
for (i=0; i<vel; i++)
{
if ((strcmp(prebaraj,niza.reziser)==0))
{
printf ("%d. Reziser:%s\n Naslov:%s\n Glaven glumec:%s\n Zanr: %s\n Godina: %d\n", i+1, niza.reziser, niza.naslov, niza.glumec, niza.zanr, niza.godina);
pronadjen=1;
}
}
}
if (tip==3)
{
printf("Vnesi baran glumec: ");
scanf("%s",prebaraj);
for (i=0; i<vel; i++)
{
if ((strcmp(prebaraj,niza.glumec)==0))
{
printf ("%d. Glaven glumec:%s\n Naslov:%s\n Reziser:%s\n Zanr: %s\n Godina: %d\n", i+1, niza.glumec, niza.naslov, niza.reziser, niza.zanr, niza.godina);
pronadjen=1;
}
}
}
if (pronadjen==0)
{
printf ("Ne e pronajden nieden rezultat.\n");
}

int pronajden;
if(pronajden==0)
{
printf ("Ne e pronajden nieden rezultat .\n\n");
}
printf ("\n");
}
void listanjesporedzanr(struct CDa* niza, int vel)
{
int stip,i;
char prebaraj[15];

printf ("\n Vnesi 1 za prebaruvanje po zanr: ");
scanf("%d",&stip);
if (stip==1)
{
printf("Vnesi baran zanr: ");
scanf("%s",prebaraj);
}
else
{
printf("Ne vnesvte znak 1.");
}
for (i=0; i<vel; i++)
{
if ((strcmp(prebaraj,niza.zanr)==0))
{
printf ("Filmovi spored toj zanr se: %s,\n\n", niza.naslov);
}
}
}

int main(int* argc,char *args[])
{
struct CDa imenik[MAXVEL];
int velicina=0,izbor=-1;

procitaj(imenik,velicina);

while (izbor!=0)
{
printf ("Pritisni 1 za vnes, 2 za ispis, 3 za prebaruvanje, 4 za listanje spored zanr, 0 za izlez : ");
scanf ("%d", &izbor);
switch (izbor)
{
case 1:
vnes(imenik,&velicina);
break;
case 2:
ispis(imenik,velicina);
break;
case 3:
prebaraj(imenik,velicina);
break;
case 4:
listanjesporedzanr(imenik,velicina);
break;
case 0:
break;
default:
printf ("Pogresen vnes !\n");
}
}
return 0;
}
 
членови онлајн
мислења
теми
членови

Последни огласи

IT.mk/market понуда

Бесплатна достава на 3000 производи
На врв Дно