Mam taki problem .. Chce napisac funkcje ktora pokaze dane wszystkich tanich ksiazek (cena < 100) zawartych w tablicy struktur:
moj program wyglada tak:
#include
using namespace std;
struct ksiazka{
char tytul[40];
char autor[40];
int cena; };
void wypisz(ksiazka &a){
cout
funkcje i struktury
-
- Użytkownik
- Posty: 311
- Rejestracja: 15 mar 2007, o 16:52
- Płeć: Mężczyzna
- Lokalizacja: Lublin
- Podziękował: 28 razy
- Pomógł: 54 razy
funkcje i struktury
Ten program powinien wyglądać mniej więcej tak:
Chociaż jeżeli to ma być w C++ to radziłbym zrobić klasę Książka i vector zamiast tablicy
Kod: Zaznacz cały
#include <iostream>
#include <string>
using namespace std;
const unsigned int rozmiar = 3;
struct Ksiazka
{
string mTytul;
string mAutor;
unsigned int mCena;
};
void wypisz(const Ksiazka& a)
{
cout << a.mTytul << " " << a.mAutor << " Cena: " << a.mCena << endl;
}
void tania(const Ksiazka* a)
{
for(unsigned int i = 0; i < rozmiar; ++i)
{
if(a[i].mCena < 100)
{
wypisz(a[i]);
}
}
}
int main(int argc, char** argv)
{
unsigned int i;
Ksiazka baza[rozmiar] = { {"Symfonia C++", "Jerzy Grebosz", 90},
{"Thinking in C++", "Bruce Eckel", 150},
{"Wygraj z C++", "Kris Jamsa", 60} };
for(i = 0; i < rozmiar; ++i)
{
wypisz(baza[i]);
}
cout << "************************************" << endl;
tania(baza);
cin.get();
return 0;
}
-
- Użytkownik
- Posty: 92
- Rejestracja: 12 gru 2007, o 14:29
- Płeć: Mężczyzna
- Lokalizacja: Szczecin
- Podziękował: 65 razy
- Pomógł: 1 raz
funkcje i struktury
Klas jeszcze nie znam, dopiero struktury ...
Ma ktos moze pomysl jak przerobic ten program aby zawieral menu ? np:
jesli ma ktos pomysl to prosze o pomoc ... kombinuje jak zrobic te funkcje by wszystko bylo przekazywane przez parametry.. a nie bezposrednio w programi ( ta petla for .. w instrukcji switch :/ )
btw: tak wiem ze instrukcje i<baza[] sa zle ...
Ma ktos moze pomysl jak przerobic ten program aby zawieral menu ? np:
Kod: Zaznacz cały
#include<iostream>
#include<string.h>
using namespace std;
struct ksiazka{
char tytul[40];
char autor[40];
unsigned int cena; };
void wpisz(ksiazka &a ){
cout<<"tytul: ";
cin>>a.tytul;
cout<<"autor: ";
cin>>a.autor;
cout<<"cena: ";
cin>>a.cena;
}
void wypisz(ksiazka &a){
unsigned int i;
cout<<i+1<<") "<<a.tytul<<" - "<<a.autor<<" - "<<a.cena<<" zl"<<endl;
}
void tania(ksiazka *a){
unsigned int i;
if(a[i].cena < 100)
{
wypisz(a[i]);
} }
int main()
{
unsigned int i, p;
bool quit = false;
int n;
ksiazka baza[] = {
{"Symfonia C++", "Jerzy Grebosz", 90},
{"Thinking in C++", "Bruce Eckel", 150},
{"Wygraj z C++", "Kris Jamsa", 60} };
cout<<"MENU"<<endl<<endl;
cout<<" 1) Wpisz nowe ksiazki do bazy. "<<endl;
cout<<" 2) Pokaz baze ksiazek. "<<endl;
cout<<" 3) Pokaz tanie ksiazki. "<<endl;
cout<<" 4) Opusc baze danych. "<<endl;
while(quit == false){
switch(p){
case '1':
for(i=0; i<baza[]; i++) // w tych miejscach nie wiem co robic ...
wpisz(baza[i]); ; break;
case '2':
for(i=0; i<baza[]; ++i){
wypisz(baza[i]); } ;break;
case '3':
for(i=0; i<baza[];++i){
tania(baza); } ;break;
case '4': quit=true;
}
cout<<"Opcja nr: ";
cin>>p;
}
cin.get();
}
jesli ma ktos pomysl to prosze o pomoc ... kombinuje jak zrobic te funkcje by wszystko bylo przekazywane przez parametry.. a nie bezposrednio w programi ( ta petla for .. w instrukcji switch :/ )
btw: tak wiem ze instrukcje i<baza[] sa zle ...
-
- Użytkownik
- Posty: 6607
- Rejestracja: 16 sty 2007, o 19:42
- Płeć: Mężczyzna
- Podziękował: 119 razy
- Pomógł: 1823 razy
funkcje i struktury
Kod pisany na szybko niesprawdzony, tak wiec moze byc cos zle:
Wszelkie bledy prosze poprawic jak ktos znajdzie POZDRO
Kod: Zaznacz cały
#include<iostream>
using namespace std;
typedef struct ksiazka
{
char *tytul;
char *autor;
unsigned int cena;
} ksiazka;
void wpisz(ksiazka *a)
{
cout<<"Tytul nowej ksiazki: ";
cin>>a->tytul;
cout<<"Autor: ";
cin>>a->autor;
cout<<"Cena: ";
cin>>a->cena;
}
void pokaz(ksiazka a)
{
cout<<a.tytul<<" - "<<a.autor<<" - "<<a.cena<<" zl"<<endl;
}
void wypisz(ksiazka a[],unsigned int ilosc)
{
unsigned int i;
cout<<endl;
for(i=0;i<ilosc;i++) pokaz(a[i]);
cout<<endl;
}
void tania(ksiazka a[],unsigned int ilosc)
{
unsigned int i;
cout<<endl;
for(i=0;i<ilosc;i++)
if(a[i].cena<100) pokaz(a[i]);
cout<<endl;
}
int main()
{
unsigned int i;
char p;
bool quit;
ksiazka *baza;
baza=(ksiazka*)malloc(3*sizeof(ksiazka));
baza[0].tytul="Symfonia C++";
baza[0].autor="Jerzy Grebosz";
baza[0].cena=90;
baza[1].tytul="Thinking in C++";
baza[1].autor="Bruce Eckel";
baza[1].cena=150;
baza[2].tytul="Wygraj z C++";
baza[2].autor="Kris Jamsa";
baza[2].cena=60;
quit=false, i=3;
cout<<"--MENU--"<<endl;
cout<<" 1) Wpisz nowe ksiazki do bazy. "<<endl;
cout<<" 2) Pokaz baze ksiazek. "<<endl;
cout<<" 3) Pokaz tanie ksiazki. "<<endl;
cout<<" 4) Opusc baze danych. "<<endl;
while(quit == false)
{
cout<<"Opcja nr: ";
cin>>p;
switch(p)
{
case '1':
i++;
baza=(ksiazka*)calloc(i,sizeof(ksiazka));
wpisz( &(baza[4]));
cin.get();
break;
case '2':
wypisz(baza,i);
break;
case '3':
tania(baza,i);
break;
case '4':
quit=true;
break;
default:
quit=false;
}
}
cin.get();
return 0;
}