[ 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. :)