You are on page 1of 17

C++adv.

www.ramona-markoska.info

03.2015

9. , ,


:. .14.- .

, , ,
, , .
, , .
, , ,
.

7 . :

#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;
struct magacin
{ char ime[10];
char kategorija[15];
int parcinja;
float nabavna;
float prodazna;
};
bool proverka(string recenica)// proverka na vnes
{
if((recenica=="hrana")||(recenica=="higiena")||(recenica=="domakinstv
o"))
return true; else {printf("Pogresna kategorija, vnesete (hrana,
higiena ili domakinstvo): ");
return false;}}
void polni()
{ FILE *f;
struct magacin a;
f=fopen("magacin.txt","a+");
printf("Vnesi ime na proizvod :");
scanf("%s",&a.ime);
printf("Vnesi kategorija
:");
while (true)
{scanf("%s",&a.kategorija);
if (proverka(a.kategorija)==true) break;}
printf("Vnesi broj na parcinja :");
scanf("%d",&a.parcinja);
printf("Vnesi nabavna cena
:");
scanf("%f",&a.nabavna);
printf("Vnesi prodazna cena
:");
scanf("%f",&a.prodazna);

fprintf(f,"%s %s %d %f %f \n",a.ime, a.kategorija, a.parcinja,


a.nabavna, a.prodazna);
fclose(f);
}
void ispis()
{FILE *f;
int reden=1;
struct magacin a;
f=fopen("magacin.txt","r");
printf("
Proizvod
Kategorija
Parcinja
Nab.cena
Pro.cena\n");
while (!feof(f))
{ fscanf(f,"%s %s %d %f %f \n",&a.ime,&a.kategorija, &a.parcinja,
&a.nabavna, &a.prodazna);
printf("%d. %10s %13s %10d %10.2f %10.2f\n",reden, a.ime,
a.kategorija, a.parcinja, a.nabavna, a.prodazna);
reden=reden+1;}
fclose(f);
}
void prebaruvanje(int n)
{
int reden=1,m;
char bara[15];
bool uslov,potvrda=false;
struct magacin a;
FILE *f;
m=strlen(bara);
switch (n)
{
case 1:{ printf("Prebaruvanje po ime na proizvod: ");
scanf("%s",&bara);
f=fopen("magacin.txt","r");
printf("\n
Proizvod
Kategorija
Parcinja
Nab.cena
Pro.cena\n");
while (!feof(f))
{
fscanf(f,"%s %s %d %f %f \n",&a.ime,&a.kategorija,
&a.parcinja, &a.nabavna, &a.prodazna);
for(int i=0;i<m;i++)
{
if (a.ime[i]==bara[i])
uslov=true;
else uslov=false;}
if (uslov==true)
{printf("%d. %10s %13s %10d %10.2f %10.2f\n",reden, a.ime,
a.kategorija, a.parcinja, a.nabavna, a.prodazna);
potvrda=true;}
reden=reden+1;}
if (potvrda==false)
{printf("\n - Ne e pronajden nieden rezultat!\n",bara);}
fclose(f);
break;}
case 2:{ printf("Prebaruvanje po kategorija: ");
scanf("%s",&bara);

C++adv.

www.ramona-markoska.info

03.2015

f=fopen("magacin.txt","r");
printf("\n
Proizvod
Kategorija
Parcinja
Nab.cena
Pro.cena\n");
while (!feof(f))
{
fscanf(f,"%s %s %d %f %f \n",&a.ime,&a.kategorija,
&a.parcinja, &a.nabavna, &a.prodazna);
for(int i=0;i<m;i++)
{
if (a.kategorija[i]==bara[i])
uslov=true;
else uslov=false;}
if (uslov==true)
{printf("%d. %10s %13s %10d %10.2f %10.2f\n",reden, a.ime,
a.kategorija, a.parcinja, a.nabavna, a.prodazna);
potvrda=true;}
reden=reden+1;}
if (potvrda==false)
{printf("\n - Ne e pronajden nieden rezultat!\n",bara);}
fclose(f);
break;}}
}
int main(int argc, char *argv[])
{ int izbor=-1,n;
while (izbor!=0) {
printf ("------------------------------------------------------------------\n");
printf ("Pritisni 1 za vnes, 2 za ispis, 3 za prebaruvanje, 0 za
izlez: ");
scanf ("%d", &izbor);
printf ("------------------------------------------------------------------\n");
switch (izbor)
{
case 1:polni(); break;
case 2:ispis(); break;
case 3:{
printf("Vnesi 1 za prebaruvanje po ime, 2 za prebaruvanje po
kategorija:");
scanf("%d",&n);
prebaruvanje(n);} break;
case 0:break;
default:printf ("Pogresen vnes !\n");
}}
system("PAUSE");
return EXIT_SUCCESS;
}

! . :

.
4 . ,
, . while
.

magacin
, , .

polni,
.
f=fopen("magacin.txt","a+");
txt. fprintf .

.
.

ispis,
fscanf,
. .


.
.
.
.

.

.
5 .
.

0 .
.
magacin.txt.

C++adv.

www.ramona-markoska.info

03.2015

: .

magacin.txt
C++.

.



, 1

. , , , ,
.
7 . 7 .



. 2

. 7
7 .



,
3, , .
,

.


.
3 . , .

.
.

C++adv.

www.ramona-markoska.info

03.2015

&. .21 12
-

, 12 ,
( 1,2,3... a,b,c...).
- 4 , () ..
8 , ). 5
.
- 4 3 ,
4 .
- 4 1.5 , 3
. .
.
5 .



0-24
5
25-32
6
32.5-27
7
37.5-40.5
8
41-45
9
45.5-50
10


7.
#include
#include
#include
#include

<string>
<iostream>
<cstdio>
<sstream>

using namespace std;


void prasanje1(int brojNaPrasanje);
bool proverkaNaBukvi(char c);
string convertInt(int number);
//Data Struktura Student
struct Student {
string ime;

int indeks;
int ocenka;
float poeni;
int tocniodgovori;
int gresniodgovori;
string listaTocniOdgovori;
string listagresniOdgovori;
Student *pecatiPointer; // ili
};
//Student *pecatiPointer; //!! da se komentira!
//Pecatenje na osvoenite poeni i ocenki
void pecati(struct Student* student) {
cout << "\tIme i Prezime: " << (*student).ime << endl;
cout << "\tBroj na indeks: " << (*student).indeks << endl;
cout << "\tOsvoeni Poeni : " << (*student).poeni << endl;
cout << "\tTocni odgovori: " << (*student).tocniodgovori << " "
<< (*student).listaTocniOdgovori << endl;
cout << "\tNe tocni odgovori: " << (*student).gresniodgovori <<
" - "
<< (*student).listagresniOdgovori << endl;
cout << "\tOcenka: " << (*student).ocenka << endl;
cout << " ----------------------------------" << endl;
}
int main() {
char karakter;
string bukva;
int brojNaStudenti = 1;
//Niza od Strukturi Student (ke se kreiraat 5 strukturi na
Student)
Student listaNaStudenti[brojNaStudenti];
//Pointer za polnenje na nizata od strukturi
Student *studentPointer;
studentPointer = listaNaStudenti;
//Pointer za pecatenje na nizata od strukturi
pecatiPointer = listaNaStudenti;
string listaTocniOdgovori = "";
string listaNeTocniOdgovori = "";
cout << endl;
cout << "\tTest" << endl;
cout << " ------------------------------" << endl;
for (int j = 0; j < brojNaStudenti; j++) {
//Pocetno kreiranje na Strukturata Student, ke se kreira onolku
pati kolku sto e brojot na studenti
struct Student student;
string ime;
char imePrezime[256];
int indeks;
float poeni = 0.0;
int brojNaOdgovori = 0;
int brojNaNeOdgovori = 0;
int ocenka;
//Cistenje na input stream posle prviot loop

C++adv.

www.ramona-markoska.info

03.2015

if (j >= 1) {
cin.clear();
cin.ignore();
}
cout << " Vnesete ime i prezime" << endl;
cin.getline(imePrezime, 256);
ime = imePrezime;
for (int t = 0; t < ime.size(); t++) {
char bukva = ime[t];
if (isupper (bukva) || bukva==' ');
else
//Proverka dali vnesenoto ime soodrzi samo bukvi
if (( bukva >= 0 && bukva <= 31) || (bukva >= 33 &&
bukva <= 90)
|| (bukva >= 91 && bukva <= 96)) {
cout << "Vaseto ime mora da soodrzi samo bukvi"
<< endl;
break;
}
}
cout << " Vnesete go brojot na indeks." << endl;
cin >> indeks;
//Proverva dali vrednosta vo cin e so validen tip, ako e
vraka true ako ne e false
if (cin.fail()) {
cin.clear(); //Go poprava streamot.
cin.ignore(); //ignorira posledno vnesena vrednost.
cout << "Ve molime vnesuvajte samo broevi." << endl;
indeks = 0;
}
for (int i = 1; i < 13; i++) {
if (i <= 4) {
prasanje1(i);
cin >> bukva;
karakter = bukva[0];
string odgovor;
string gresenOdgovor;
//Dokolku e soodvetna bukva A,B,C,D,E
if (proverkaNaBukvi(karakter)) {
//Dokolku e pogoden tocen odgovor (A ili B)
if ((karakter >= 65 && karakter <= 66) ||
(karakter >= 97&&karakter <= 98)) {
//Osvoeni 8 poeni
poeni = poeni + 8;
++brojNaOdgovori;
odgovor = convertInt(i) + karakter;
listaTocniOdgovori = listaTocniOdgovori + odgovor + " ";
} else
{
//Osvoeni 0 poeni
poeni = poeni + 0;
++brojNaNeOdgovori;
char tocen = 97;

char tocen1 = 98;


//Snimanje na gresen odgovor
gresenOdgovor = convertInt(i) + karakter + "(" + tocen+ "," + tocen1
+ ")";
listaNeTocniOdgovori = listaNeTocniOdgovori+ gresenOdgovor + " ";
}
}
//Dokolku ne e izbrana soodvetna bukva za odgovor prasanajeto se
skoka i se dobiva 0 poeni za tekovnoto prasanje
else {
cout << "Treba da odgovorite so a,b,c,d,e
" << endl;
poeni = poeni + 0;
}
} else if (i >= 5 && i <= 8) {
prasanje1(i);
cin >> bukva;
karakter = bukva[0];
string odgovor;
string gresenOdgovor;
//Dokolku e soodvetna bukva A,B,C,D
if (proverkaNaBukvi(karakter)) {
//Dokolku e pogoden tocen odgovor (C)
if (karakter == 67 || karakter == 99) {
//Osvoeni 3 poeni
poeni = poeni + 3;
++brojNaOdgovori;
odgovor = convertInt(i) + karakter;
listaTocniOdgovori =
listaTocniOdgovori + odgovor;
} else {
//Osvoeni 0 poeni
poeni = poeni + 0;
++brojNaNeOdgovori;
char tocen = 99;
//Snimanje na gresen odgovor
gresenOdgovor = convertInt(i) +
karakter + "(" + tocen+ ")";
listaNeTocniOdgovori = listaNeTocniOdgovori+ gresenOdgovor + " ";
}
}
//Dokolku ne e izbrana soodvetna bukva za
odgovor prasanajeto se skoka i se dobiva 0 poeni za tekovnoto
prasanje
else {
cout << "Treba da odgovorite so a,b,c,d,e
" << endl;
poeni = poeni + 0;
}
} else if (i >= 9 && i <= 12) {
prasanje1(i);
cin >> bukva;
karakter = bukva[0];
string odgovor;
string gresenOdgovor;
//Dokolku e soodvetna bukva A,B,C,D
if (proverkaNaBukvi(karakter)) {

10

C++adv.

www.ramona-markoska.info

03.2015

//Dokolku e pogoden tocen odgovor (B)


if (karakter == 66 || karakter == 98) {
//Osvoeni 1.5 poeni
poeni = poeni + 1.5;
++brojNaOdgovori;
odgovor = convertInt(i) + karakter;
listaTocniOdgovori =
listaTocniOdgovori + odgovor;
} else {
//Osvoeni 0 poeni
poeni = poeni + 0;
++brojNaNeOdgovori;
char tocen = 98;
//Snimanje na gresen odgovor
gresenOdgovor = convertInt(i) +
karakter + "(" + tocen
+ ")";
listaNeTocniOdgovori =
listaNeTocniOdgovori
+ gresenOdgovor + " ";
}
}
//Dokolku ne e izbrana soodvetna bukva za
odgovor prasanajeto se skoka i se dobiva 0 poeni za tekovnoto
prasanje
else {
cout << "Treba da odgovorite so a,b,c,d,e
" << endl;
poeni = poeni + 0;
}
}
}
//Presmetka na bodovoite i kreiranje na ocenkata
if (poeni >= 0 && poeni <= 24) {
ocenka = 5;
} else if (poeni >= 25 && poeni <= 32) {
ocenka = 6;
} else if (poeni >= 32 && poeni <= 37) {
ocenka = 7;
} else if (poeni >= 37 && poeni <= 40) {
ocenka = 8;
} else if (poeni >= 41 && poeni <= 45) {
ocenka = 9;
} else if (poeni >= 46 && poeni <= 58) {
ocenka = 10;
}
//Popolnuvanje na Strukturata so dobienite podatoci
student.ime = ime;
student.indeks = indeks;
student.poeni = poeni;
student.ocenka = ocenka;
student.tocniodgovori = brojNaOdgovori;
student.listaTocniOdgovori = listaTocniOdgovori;
student.gresniodgovori = brojNaNeOdgovori;
student.listagresniOdgovori = listaNeTocniOdgovori;
*studentPointer = student;

11

*studentPointer++;
}
cout << " ----------------------------------" << endl;
for (int i = 0; i < brojNaStudenti; i++) {
pecati(pecatiPointer++);
}
system("Pause");
return 0;
}
//Proverka dali vneseniot karakter e golema ili mala bukva i dali e
nekoja od slednite karakteri:A,B,C,D,E. Ako e vraka true ako ne e
false.
bool proverkaNaBukvi(char c) {
if ((c >= 65 && c <= 69) || (c >= 97 && c <= 101))
return true;
else
return false;
}
//Generiranje na prasanja vo zavisnost od redniot brojot na
prasanjeto generira 5 prasanja ili 4 prasanja.
void prasanje1(int brojNaPrasanje) {
cout << brojNaPrasanje << ".Prasanje broj " << brojNaPrasanje <<
" ?"
<< endl;
//Dokolku e prasanje od 1 do 4(Od prvo do cetvrto prasanje treba
da imaat po 5 prasanaja)
if (brojNaPrasanje >= 1 && brojNaPrasanje <= 4) {
cout << "\ta.Odgovor broj 1?" << endl;
cout << "\tb.Odgovor broj 2?" << endl;
cout << "\tc.Odgovor broj 3?" << endl;
cout << "\td.Odgovor broj 4?" << endl;
cout << "\te.Odgovor broj 5?" << endl;
}
//Dokolku e prasanje od 5 do 8(Od sesto do dvanaesetto prasanje
treba da imaat po 4 prasanaja)
else if (brojNaPrasanje >= 5 && brojNaPrasanje <= 8) {
cout << "\ta.Odgovor broj 1?" << endl;
cout << "\tb.Odgovor broj 2?" << endl;
cout << "\tc.Odgovor broj 3?" << endl;
cout << "\td.Odgovor broj 4?" << endl;
}
//Dokolku e prasanje od 9 do 12(Od sesto do dvanaesetto prasanje
treba da imaat po 3 prasanaja)
else if (brojNaPrasanje >= 9 && brojNaPrasanje <= 12) {
cout << "\ta.Odgovor broj 1?" << endl;
cout << "\tb.Odgovor broj 2?" << endl;
cout << "\tc.Odgovor broj 3?" << endl;
}
}
//Konvertiranje na integer vo string, kako vo vizuelni jazici
string convertInt(int number) {
stringstream ss;

12

C++adv.

www.ramona-markoska.info

03.2015

ss << number;
return ss.str();
}

:.




&. 11. 1

Notepad,
, , , ,
.
:
1. 2 .
2. :
.
2
. Y,Z, ,B .
.
. 9 0, 0 9.
.
3. .
4. 300 ,
.

13

7.



&. : 4


, 9 0.
. ( ,
).
Notepad .
1.
, .
2.
.
3. 3 ( 6
). , .



7.

#include
#include
#include
#include
#include

<cstdlib>
<iostream>
<fstream>
<ctime>
<string>

14

C++adv.

www.ramona-markoska.info

using namespace std;


void ispis(string recenica)
{
ofstream outFile;
outFile.open("C:\\kodiranje.txt");
outFile.clear();
outFile <<recenica;
outFile.close();
}
void mesaj(string upis)
{
string mesan;
mesan.clear();
int vnes=0,i=0;
int n=upis.length();
srand(time(NULL));
rand();
while(true)
{ int broj=(static_cast<float>(rand())/RAND_MAX)*26;
mesan=mesan+upis.at(i);
i=i+1;
if (i>(n-1)) break;
if (((broj+65)>65) && ((broj+65)<91)){
mesan=mesan+(char(broj+65));}}
ispis(mesan);}
string siftiraj(string vnes)
{ for(int i=0;i<vnes.length();i++)
{ switch(vnes.at(i))
{
case '0':vnes.at(i)='1';break;
case '1':vnes.at(i)='2';break;
case '2':vnes.at(i)='3';break;
case '3':vnes.at(i)='4';break;
case '4':vnes.at(i)='5';break;
case '5':vnes.at(i)='6';break;
case '6':vnes.at(i)='7';break;
case '7':vnes.at(i)='8';break;
case '8':vnes.at(i)='9';break;
case '9':vnes.at(i)='0';break;
}
}
return vnes;
}
void samo_cifri()
{ FILE *f;
f=fopen("C:\\kodiranje.txt","r");
char cifri[40];
fscanf(f,"%s\n",&cifri);
int vles=0,aski;
string stringot;
stringot.clear();
for(int i=0;i<strlen(cifri);i++)
{aski=int(cifri[i]);

15

03.2015

if((aski>47)&&(aski<58))
{stringot=stringot+cifri[i];}
}
fclose(f);
ofstream outFile;
outFile.open("C:\\cifri.txt");
outFile<<stringot;
outFile.close();
}

:.

16

C++adv.

www.ramona-markoska.info

03.2015


17

You might also like