Nájdenie súmerného čísla

Programovacie jazyky, rady, poradňa...
juruces
Amateur
Amateur
Príspevky: 23
Registrovaný: 19 nov 2013, 15:58

Nájdenie súmerného čísla

Príspevok od používateľa juruces »

caute dostal som úlohu Vytvorte program, ktorý po zadaní prirodzeného čísla "n" nájde prvé, od neho väčšie "súmerné" číslo, t.j. číslo, ktoré je z obidvoch strán (spredu aj zozadu ) rovnaké! a neviem si s ňou rady ,

//autoeditácia príspevku (19 Nov 2013, 16:05)
zistenie či je číslo súmerné mám spravený ale keď nie je ktoré je najbližšie to už neviem

Kód: Vybrať všetko

    unsigned int cislo; //skumane cislo
    unsigned int cifry[10]; //pole cifier
    int i=-1; //počítadlo cifier
    int j,k;    //počítadlá do for
    typedef enum {NIE,ANO} v;
    int vysledok=ANO; //označuje, či je sumerne
    printf("Zadaj cislo (max. 10 cifier):");
    scanf("%d",&cislo);
    while(cislo>0)
    {
        cifry[++i]=cislo%10;
        cislo/=10;
    }
    printf("Cifry:\n");
    for(j=0;j<=i;j++)
    {
        printf("%d ",cifry[j]);
    }
    for(j=0,k=i;j<=i/2;++j,--k)
    {
        if(cifry[j]==cifry[k])
        {
            printf("\n%d = %d",cifry[j],cifry[k]);
        }
        else
        {
            printf("\n%d != %d",cifry[j],cifry[k]);
            vysledok=NIE;
            break;
        }
    }
    (vysledok==ANO)?printf("\nJE sumerne!"):printf("\nNIE je sumerne!");
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Re: Nájdenie súmerného čísla

Príspevok od používateľa BX »

Tak zaprvé, daj ten kód do tagu CODE, nech sa to lepšie číta.

No a najbližšie väčšie, no tak si spravíš funkciu "je sumerne", ktorá ti vráti true/false a len pôjdeš v cykle od n dokým nejaké súmerné nenájdeš.
A mimochodom, tie "súmerné" čísla sa volajú palindrómy a majú veľa super vlastností. Dalo by sa to riešiť viacerými spôsobmi, tento je taký jednoduchý, priamočiary... hlúpy. Ale funkčný.
juruces
Amateur
Amateur
Príspevky: 23
Registrovaný: 19 nov 2013, 15:58

Re: Nájdenie súmerného čísla

Príspevok od používateľa juruces »

nemohol by si my ho napísať celí prosím ťa ak ťa to nebude obťažovať .
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Re: Nájdenie súmerného čísla

Príspevok od používateľa BX »

Nemohol, veď funkciu napísanú máš, len z toho urob funkciu. A cyklus snáď napísať tiež vieš.
main bude vyzerať nejako takto

Kód: Vybrať všetko

for( i = n+1; i < 2*n; i++ )
    if( jeSumerne(i) ) { printf( "Nasiel som!\n" ); break; }
i ide do 2*n, lebo dovtedy ten palindrom určite nájdeš. Ak by si sa trochu zamyslel, našiel by si aj tesnejšiu hranicu, po ktorú ti stačí hľadať.

No a ten tvoj kód si len prepíš na funkciu, ktorá vráti true/false (resp. v C-čku 1/0)

Kód: Vybrať všetko

int jeSumerne( int n )
{
    ...tvoj kod
}
juruces
Amateur
Amateur
Príspevky: 23
Registrovaný: 19 nov 2013, 15:58

Re: Nájdenie súmerného čísla

Príspevok od používateľa juruces »

//autoeditácia príspevku (19 Nov 2013, 17:23)
niekto mi to spravte prosím vás lebo furt mi to nejde . a mám to o 6 odovzdať
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Re: Nájdenie súmerného čísla

Príspevok od používateľa BX »

Ten, čo ti písal ten kód, ti nechcel poradiť, čo? :/
Tak najprv mu povedz, že to spravil zbytočne zložito, test na palindróm je záležitosť troch riadkov.
No a potom si aj ty skús pozrieť funkciu printf, hlavne. Také printf("%d",cislo) sa vždy zíde.
juruces
Amateur
Amateur
Príspevky: 23
Registrovaný: 19 nov 2013, 15:58

Re: Nájdenie súmerného čísla

Príspevok od používateľa juruces »

to písal učitel , a ked ide o to printf tak to viem :) , ale z tohoto príkladu som hotový
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Re: Nájdenie súmerného čísla

Príspevok od používateľa BX »

Tak ak vás takto učia programovať, tak sa veru nečudujem, že toto nevieš. Ten jeho kód je úplne hrozný.
No len sa tráp, celý postup som ti tu dal. Aby si to dostal do funkčného stavu, potrebuješ upraviť jeden riadok v tom kóde, plácnuť to do funkcie (jej podobu som ti napísal) a pripísať cyklus do mainu (aj ten som ti napísal)
rochedo
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 5328
Registrovaný: 08 okt 2005, 22:17
Bydlisko: KE

Re: Nájdenie súmerného čísla

Príspevok od používateľa rochedo »

Uz je po deadline tak to sem hodim ak si s tym nebudes vediet aj nadalej poradit.
Spoiler

Kód: Vybrať všetko

#include <stdbool.h>

bool isPal(int n) {	
	unsigned int cifry[10]; //pole cifier
	int i=-1; //počítadlo cifier
	int j,k;    //počítadlá do for

	while(n>0) {
		cifry[++i]=n%10;
   	 	n /= 10;	
	}
	
	printf("Cifry:\n");
	
	for(j=0;j<=i;j++) {
		printf("%d ",cifry[j]);
	}
	
	for(j=0,k=i;j<=i/2;++j,--k) {
	
		if(cifry[j]==cifry[k]) {
			printf("\n%d = %d",cifry[j],cifry[k]);
    	} else {
    		printf("\n%d != %d",cifry[j],cifry[k]);
       	 	return false;
    	}
	}
		
	return true;	
}

int main() {
	bool result = true;
	unsigned int cislo; //skumane cislo
	
	printf("Zadaj cislo (max. 10 cifier):");
	scanf("%d",&cislo);
	
	do {
		cislo++;
	} while(!isPal(cislo));
	
	printf("\nCislo %i je sumerne", cislo);
		
	return 0;
}
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: Nájdenie súmerného čísla

Príspevok od používateľa audiotrack »

prd je po deadline, ľudia vždy skrátia deadline aby zdramatizovali situáciu a vyvolali väčšiu snahu poradiť. A tiež, aby si stihli nájsť niekoho iného ak neporadíme :)

učiteľ čo nevie programovať asi neprijíma úlohy cez automatizovaný systém ale si ich vyzbiera až v škole. Takže najskôr zajtra.
juruces
Amateur
Amateur
Príspevky: 23
Registrovaný: 19 nov 2013, 15:58

Re: Nájdenie súmerného čísla

Príspevok od používateľa juruces »

nie už je po deadline ale aj tak Ďakujem , posielame to na moodle
Napísať odpoveď