Miért nem működik helyesen a program, hogy ha a tömb méretét adom meg? (többi lent, c++)
Adott:
bool tizzel(int tomb[],int m)
{
int i=0;
while ((i<=m) && tomb[i]%10==0)i++;
return i>m;
}
int main()
{Ionescu a;
int d[]={10,20,30,40,50, 70,80};
cout<<tizzel(d,4);
return 0;
}
-----
Ha a d tömb mérete mondjuk 2 és mind a két szám osztható tízzel,akkor az eredmény nulla lesz. (persze akkor ez a sor van beírva: tizzel(d,2))
Ha a d tömb mérete 10 és az összes szám osztható maradék nélkül:
tizzel(d,10) esetén az eredmény nulla
tizzel(d,2) esetén az eredmény egy.
Vegyük példának az
int k[2] tömböt. Ennek a többnek két eleme van: k[0] és k[1] (a legtöbb nyelvben így van, a pascal kivételt képez.
k[2] nem létezik.
Használd a C++ előnyeit, és használj vektort.
#include "stdafx.h" // Precompiled header, ha nem kell szedd ki
#include <iostream>
#include <vector>
bool tizzel(std::vector<int> tomb, int m)
{
if(m > tomb.size() || m < 1)
throw std::out_of_range("bla-bla");
for(int i = 0; i < m; i++)
if(tomb[i] % 10 != 0)
return false;
return true;
}
int main()
{
std::vector<int> d{10, 20};
try
{
std::cout << tizzel(d, 2) << std::endl;
}
catch (std::out_of_range &e)
{
std::cerr << e.what() << std::endl;
}
std::getchar();
return 0;
}
kk mindenkinek. :)
Hát, "kaptam" ezt a kódot, egyből azt hittem, hogy az m-nek a méretet kell megadni. : D
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!