problem ze zmiennymi przypisywanymi do funkcji

0

Witam
mam tak zdefiniowaną funkcję

bool wczytajLiczbe( const char* pytanie, int &liczba ) 

lecz jeśli chcę przypisać w miejsce zmiennej liczba np zmienną typu int wybor

 wczytajLiczbe( const char* pytanie, wybor );

w taki sposób to wyskakuje mi błąd
chodzi o to że w późniejszym miejscu zmienna pytanie mi nie jest potrzebna chodzi o to ze zmienna wybor przyjmuje inne wartości

 Multiple markers at this line
	- Syntax error
	- expected primary-expression 
	 before 'const'
0
wczytajLiczbe("jakis tekst",wybor);
0

Jak nie jest Ci ten argument zawsze potrzebny, to mozesz zdefiniowac dla niego domyslna wartosc

bool funkcja(int wybor, const char* pytanie = NULL);

Wtedy pozbedziesz sie przekazywania tego argumentu, a w funkcji bedzie mial on wartosc NULL.
Dodatkowo argumenty domyslne musza byc na koncu listy argumentow.

0
 #include <iostream>
#include <ctime>
#include "testy.h"
#include "powtorka.h"
#include <cstring>
#include <cstdlib>
#include <cstdio>

using namespace std;

#define CHAR100 (char*)malloc(100)

const int maxIloscOsob=100;
const char* nazwaPliku = "C:/dane.txt";

Osoba osoby[maxIloscOsob];
int iloscOsob = 0;

int dajIloscOsob() { return iloscOsob; }

Osoba* dajOsobe( int i ) { return &osoby[i]; }

char* dzis() {
	time_t current = time(0);
	char* c = (char*)malloc(6);
	strftime( c, 6, "%y%m%d", localtime(&current) );
	return c;
}

bool wczytajLiczbe( const char* pytanie, int &liczba ) {
	// zadaniem funkcji jest wczytanie liczby calkowitej do zmiennej referencyjnej liczba.
	// jesli wczytanie z klawiatury nie powiedzie sie (np. poniewaz uzytkownik nie wpisze poprawnej
	// liczby) zwracana jest wartosc false, w przeciwnym wypadku true
	// parametr pytanie to lancuch znakow do wyswietlenia jako zacheta, np. "Ile masz lat?"
	// Opis wczytywania z obsluga bledow znajduje sie w instrukcji do cwiczenia 5

	/* NALEZY WPISAC KOD */
	cout<<pytanie;
	if (scanf("%i", &liczba)==1) return true;

	//cout<<liczba;

	if (((int) liczba>(int)'0')&&((int)liczba<(int)'6'))
	return true ;
}

int menu() {

	cout<<"1. Wczytaj liste z pliku"<<"\n2. Pokaz liste"<<"\n3. Wyczysc liste"<<"\n4. Dodaj osobe"<<"\n5. Zapisz liste"<<endl;
	// funkcja powinna wyswietlic menu o takich pozycjach:
	// 1. Wczytaj liste z pliku, 2. Pokaz liste, 3. Wyczysc liste, 4. Dodaj osobe, 5. Zapisz liste, 0. Koniec
	// korzystajac z funkcji wczytajLiczbe() nalezy poznac wybor uzytkownika
	// zwrocic wpisana wartosc z zakresu 0..5 lub powtorzyc wczytywanie
	/* NALEZY WPISAC KOD */
	//case
	int dana;
	bool spr=false;
do{
	cin>>dana;
dana=wczytajLiczbe( *pytanie,dana );
}
while(dana==true);

		return 0;
}

bool poprawnyPesel( const char* pesel ) {
	// funkcja sprawdza, czy podany pesel jest poprawny
	// uproszczone zalozenia:
	// - pesel ma 11 znakow
	// - ostatnia cyfra jest cyfra kontrolna (szczegoly w instrukcji)

	/* NALEZY WPISAC KOD */
	return true; // te linie usunac
	/* TU NALEZY WPISAC KOD */
}

bool dodajOsobe( const char* imie, const char* pesel ) {
	// funkcja zapisuje przekazane dane do kolejnej struktury w tablicy osoby (osoby[iloscOsob])
	// nastepnie zwieksza wartosc zmiennej iloscOsob
	// przed zapisaniem sprawdzana jest poprawnosc peselu
	// aby przepisac lancuch znakow ze zmiennej const char* a do char* b nalezy:
	// - przydzielic pamiec dla zmiennej b, np. b = CHAR100;
	// - skorzystac z funkcji strcpy, np. strcpy(b,a);
	// wartosc zwracana przez funkcjie dodajOsobe() to true jesli osobe dodano (pesel poprawny), false w przeciwnym przypadku

	/* NALEZY WPISAC KOD */
	return true; // te linie usunac
	/* TU NALEZY WPISAC KOD */
}

void wczytajDaneOsobyIDodaj() {
	// nalezy zadeklarowac i przydzielic pamiec dla zmiennych imie, pesel
	// zapytac uzytkownika o odpowiednie dane i wczytac do zmiennych
	// skorzystac z funkcji dodajOsobe()
	// jesli zwrocila false, to zwolnic pamiec przydzielona dla zmiennych
	// i wyswietlic komunikat "Nie dodano osoby!"

	/* NALEZY WPISAC KOD */

	/* TU NALEZY WPISAC KOD */
}

void pokazDaneOsoby( Osoba* o ) {
	// nalezy wyswietlic dane osoby w formacie: imie[tabulator]pesel[koniec linii]

	/* NALEZY WPISAC KOD */

	/* TU NALEZY WPISAC KOD */
}

int wiekOsoby( const char* pesel ) {
	// nalezy obliczyc wiek osoby w latach i wpisac do zmiennej wiek
	// aktualna data znajduje sie w zmiennej dzisiaj w formacie RRMMDD
	// nalezy pamietac, ze np. dla roku 2012, dzisiaj[0] to znak '1' (nie liczba 1)
	char* dzisiaj = dzis();
	int wiek;

	/* NALEZY WPISAC KOD */

	/* TU NALEZY WPISAC KOD */

	free(dzisiaj);
	return wiek;
}

Osoba* najmlodszaOsoba() {
	// funkcja przeszukuje liste osoby[]
	// i zwraca wskaznik do najmlodszej z nich (umieszczony w zmiennej r)
	// jesli lista jest pusta zwracana jest wartosc NULL

	Osoba* r;

	/* NALEZY WPISAC KOD */

	/* TU NALEZY WPISAC KOD */

	return r;
}

void pokazListeOsob() {
	// funkcja wyswietla dane wszystkich osob z listy
	// nastepnie korzystajac z funkcji najmlodszaOsoba() znajduje osobe o najnizszym wieku
	// i wyswietla jej dane oraz wiek, np.
	// Najmlodsza osoba: Ala 12212020200
	// ma 0 lat.

	/* NALEZY WPISAC KOD */

	/* TU NALEZY WPISAC KOD */
}

void wczytajZPliku() {
	// funkcja otwiera do odczytu plik "nazwaPliku"
	// nalezy zadeklarowac i przydzielic pamiec dla zmiennych imie, pesel
	// korzystajac z funkcji fscanf() wczytac dane wszystkich osob
	// wczytywanie konczy sie gdy funkcja fscanf() zwroci EOF
	// osobe dodac do listy korzystajac z funkcji dodajOsobe()
	// zwolnic pamiec dla zmiennyc imie i pesel
	// plik zamknac

	/* NALEZY WPISAC KOD */

	/* TU NALEZY WPISAC KOD */
}

void zapiszDoPliku() {
	// otworzyc do zapisu plik "nazwaPliku"
	// wpisac do niego dane wszystkich osob w formacie: imie[tabulator]pesel[nowa linia]
	// plik zamknac

	/* NALEZY WPISAC KOD */

	/* TU NALEZY WPISAC KOD */
}

int main() {
	for (int i=3;i<=11;i++) if (!test(i)) break;
	return 0;

	int wybor = 0;
	while ((wybor=menu()) != 0) {
		switch (wybor) {
		case 1:
			iloscOsob=0;
			wczytajZPliku();
			break;
		case 2:
			pokazListeOsob();
			break;
		case 3:
			iloscOsob=0;
			break;
		case 4:
			wczytajDaneOsobyIDodaj();
			break;
		case 5:
			zapiszDoPliku();
			break;
		}

	}
}

ogólnei to mam problem tutaj z int menu ...

0

zamiast:

        bool spr=false;
do{
        cin>>dana;
dana=wczytajLiczbe( *pytanie,dana );
}
while(dana==true);
 
                return 0;
while(!wczytajLiczbe("Wybierz pozycje: ",dana))
return dana;

1 użytkowników online, w tym zalogowanych: 0, gości: 1