Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno c-priklad prvre vacsie sumerne cislo od zadaneho cisla

Ahoj ako uz nadpis napoveda ide o program ktory po zadani lubovolneho cisla (do 10 cifier) najde prve vacsie sumerne cislo od zadaneho teda ja napr. zadam 1440 a napise mi to 1441. Neviete kde mozem mat chybu mam do odovzdania zadania malo casu a dnes mi to nejako nemysli prosim poradte

#include <stdio.h>
#include <stdlib.h>
#include "skola.h"

//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é!
//Napr. pre n=144 je súmerné èíslo 151
int main()
{
    const int MAX=999999;
    const int POCET=10;
    int cifry_pole[POCET];
    int cislo=0;
    int vacsie_cislo=0;
    int cifry=0;
    int i=0;

    printf("Zadaj prirodzene cislo maximalne 10 ciferne: ");
    scanf("%d",&cislo);

    vacsie_cislo=cislo;

    while(vacsie_cislo<MAX)
    {
        vacsie_cislo++;

        for(i=0;vacsie_cislo>0;i++,cifry++)
        {
            cifry_pole[i]=vacsie_cislo%10;
            vacsie_cislo/=10;
            printf("%d\n",cifry_pole[i]);
        }

        for(i=0;i>cifry;i++,cifry--)
        {
            if(cifry_pole[i]==cifry_pole[cifry])
            {
                printf("Vacsie sumerne cislo od zadaneho je: %d",vacsie_cislo);
                return 0;
            }
        }
    }
    return 0;
}
Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
"Trochu" efektívnejšia verzia: #include <stdio.h> #include <stdlib.h> #include <string.h> int main(… nový
los 20.11.2013 20:06
los
Omg. Nějak moc ḱódu, né? :-) poslední
MaSo 21.11.2013 09:44
MaSo

"Trochu" efektívnejšia verzia:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main() {
	char number[11], buffer[6];
	int len, size, index, left, leftRev, right;

	printf("Zadaj cislo (max. 10 cifier): ");
	fgets(number, 11, stdin);
	len = strlen(number);
	if (number[len - 1] == '\n')
		number[--len] = 0;
	size = (len + 1) / 2;
	index = len / 2;
	buffer[size] = 0;
	strncpy(buffer, number + index, size);
	right = atoi(buffer);
	strncpy(buffer, number, size);
	left = atoi(buffer);
	strrev(buffer);
	leftRev = atoi(buffer);
	if (right >= leftRev) {
		left++;
		itoa(left, number, 10);
		itoa(left, number + index, 10);
		strrev(number + index);
	} else
		strncpy(number + index, buffer, size);
	printf("%s\n", number);
	return 0;
}

Zpět do poradny Odpovědět na původní otázku Nahoru