C++ bemenet ellenőrzés?
Ez a beolvasásos függvényem:
void Beolvas(int &N, int* adatok)
{
do
{
cin >> N;
}
while(!HelyesN(N));
for(int i=1; i<=N; i++)
{
do
{
cin >> adatok[i];
}
while(!HelyesAdatok(adatok[i]));
}
}
itt az utolsó sorra ezt írja ki:
"error: invalid conversion from 'int' to 'int*' [-fpermissive]"
ez pedig a bemenet ellenőrzéses :
De itt pedig az első sorra ezt írja ki:
"error: initializing argument 1 of 'bool HelyesAdatok(int*)' [-fpermissive]"
bool HelyesAdatok(int* adatok)
{
int i=1;
if(adatok[i]<0)
{
cerr << "A meresi eredmeny nem lehet negativ\n";
}
if (adatok[i]>500)
{
cerr << "az adat nem lehet nagyobb mint 500";
}
return (adatok[i]>=0 && adatok[i]<=maxAi);
}
nemrég kezdtem tanulni a programozást, így nem igazán értem mi a probléma :/
1. C++-ban a tömbök 0-tól indexelődnek.
2. A Helyes adatok függvényed teljesen hibás.
Tömböt kéne átadnod, miközben intet adsz át, közben lefixálsz egy indexet 1-re, ami lehet nincs is benne a tömbben.
Output-ra írsz egy függvényben, ami egy logikai vizsgálatot végez, borzasztó mellékhatás.
"error: invalid conversion from 'int' to 'int*' [-fpermissive]"
int és int* közötti konverziós hiba. A HelyesAdatok függvényed egy tömböt (az egyszerűség kedvéért: int*) vár bemenetnek, te pedig egy tömbelemet adsz át neki.
A második hiba ugyanerre vezethető vissza.
#1: Az eldöntője a cerre ír ki, az miért is gond?
Köszi
a 0-tól indexelés az a program többi részénél ki van küszöbölve
hogy kell azt megcsinálni, hogy ne tömbelemet hanem tömböt adjak át? ha kiszedem az "i" betűt, akkor is ír ki hibát
while(!HelyesMeresek(meresek[]));
erre azt írja ki, hogy
"error: expected primary-expression before ']' token
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!