[ SuperC @ 12.11.2006. 00:09 ] @
| Pokusavah vise puta no, ne vidjeh kako:
Napisati program u c++ odnosno funkciju bool intTest (int n, char c), koja potvrdjuje, da li se cifra c u broju n nalazi. Eh, sad najbitnije da se ovo proba uraditi bez petlji u samoj funkciji.
|
[ NrmMyth @ 12.11.2006. 09:16 ] @
Pojasni:
"da li se cifra c u broju n nalazi"
[ SuperC @ 12.11.2006. 10:22 ] @
Pa koliko sam ja shvatio moze da se nalazi i da se ne nalazi, pretpostavljam da nekako treba ulaznu varijablu/promjenjivu provjeriti da li vec postoji u nekom broju. Npr. da li se cifra 5 nalazi unutar broja 15673984 ili unutar broja 167823
Tako sam ja to shvatio ili?
[ NrmMyth @ 12.11.2006. 12:29 ] @
Code:
bool func( int x, char c )
{
char s[32];
sprintf( s, "%d", x );
for( int i = 0; s[i] != '\0'; ++i )
if( s[i] == c ) return true;
return false;
};
[ SuperC @ 12.11.2006. 12:58 ] @
Hvala puno. Mislio sam da moze preko for petlje, nisam znao da moram sprintf uvesti, a sta mislis moze li se to preko neke funkcije uraditi, da nema petlje, npr:
[ Mali Misha @ 12.11.2006. 13:06 ] @
Petlja može biti
sakrivena u nekoj drugoj funkciji. Ali je potrebna da bi se kroz broj prošlo i ispitala svaka njegova cifra. Na primer:
Code:
bool func( int x, char c )
{
char s[32],t[2];
sprintf( s, "%d", x );
t[0] = c;
t[1] = 0;
return strstr(s,t);
}
[ SuperC @ 12.11.2006. 13:09 ] @
Mislim dosao sam ja do rjesenja kao sto je ovo, da nadjem neki broj:
#include <iostream>
#include <algorithm>
using namespace std;
main()
{
int brojevi[9] = {1,2,4,9,5,6,7,8,9};
int *broj;
found = find(brojevi, brojevi+9, 4);
if (found!=brojevi+9)
{
cout << "Pronadjen je : " << *broj << endl;
}
else
{
cout << "Nema trazenog broja" << endl;
}
}
ali nije preko bool intTest
[ Xabre @ 13.11.2006. 15:36 ] @
Ako bas hoces bez petlje, probaj rekurzijom. Recimo ovako:
bool bTest(char n, char *c)
{
if(*c == n)
return true;
else if(*c != n && *c != '\0')
return (bTest(n, ++c));
else
return false;
}
[ Mali Misha @ 13.11.2006. 15:58 ] @
Rekurzija je dobra ideja, no deklaracija je bila gore malko izmenjena..
Code:
bool func(int x,char c) // poziv sa func(111110111,'0') npr.
{
if((x%10) == (c-'0')) return true;
if(x < 10) return false;
return func(x/10,c);
}
[ Xabre @ 13.11.2006. 17:48 ] @
Da, elegantno resenje. :)
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.