Выдает номер ячейки

01.01.2001

Выдает номер ячейки
вместо ответа выдает номер ячейки :О почему так? все ведь верно !
#include
#include
#include
#include
main () {
int z=0;
int x=0;
int i=100;
int n ;
printf("\n chislo =");
scanf("%i",&n);
while ( n>1 ) {
z=n;
i=i-1;
if(z!=2||z!=5) {
x = x+(z*pow(10, i));
}
n=n/10;
}
printf("%i\n",x);
getch();
//system("pause");
//return 0;
}

  • if(z!=2||z!=5) {
    Что ты хотел изобразить этим условием? У тебя вторая часть условия бессмысленна. Если z != 2, то она не выполнится, а если z == 2, то ясен пень, пяти оно уже не равно. Поэтому можно оставить просто if (z != 2)
    pow - это же возведение в степень? Ты возводишь 10 в 100-ю степень и хочешь уместить это в int? И зачем там скобки вокруг умножения?
    Я не очень знаю си, что будет с int если присвоить ему 1/10? Ноль?

    А вообще, что ты хотел получить в итоге-то? 100*10^99 + 10*10^98 + 10^97?
    У тебя z никогда не будет равна ни 2 ни 5, откуда ты это условие вообще достал? Ты ж n делишь на 10 каждую итерацию.
    И да, i-- выглядит лучше, чем i=i-1. А вместо x = x+ … можно использовать x += …
    Ты в си из паскаля пришёл?
    Зачем тут переменная z? Она же ничего не делает, используй n

Вас заинтересует