Найти ошибку в программе
Код:
#include "stdafx.h"
#include "iostream"
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int i,n,k=0,z,m,l;
cout << "vvedite n>10:"<<endl;
cin>>n;
for (i=10;i<=n;i++)
{
z=i;
while(z>10)
{
m=z%10;
z=z/10;
if(z%10<m)
k=1;
else if(z%10>m)
k=1;
else k=0;break;
}
if(k==1)
{k=0;
cout<<i<<' ';}
}
return 0;
}
#include "iostream"
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int i,n,k=0,z,m,l;
cout << "vvedite n>10:"<<endl;
cin>>n;
for (i=10;i<=n;i++)
{
z=i;
while(z>10)
{
m=z%10;
z=z/10;
if(z%10<m)
k=1;
else if(z%10>m)
k=1;
else k=0;break;
}
if(k==1)
{k=0;
cout<<i<<' ';}
}
return 0;
}
Пойдет? Или уже не актуально? :)
В смысле десятичная запись, если ты про систему счисления то тогда какими у тебя должны быть входные данные ? Так ладно напиши пример того как должна работать программа по твоему
Цитата: Mr.Sharps
В смысле десятичная запись, если ты про систему счисления то тогда какими у тебя должны быть входные данные ? Так ладно напиши пример того как должна работать программа по твоему
Да все очень просто. Нужно удалить числа, вроде 11, 22, 33...111, 222. Так, автор?
Цитата: mnanorn
Цитата: Mr.Sharps
В смысле десятичная запись, если ты про систему счисления то тогда какими у тебя должны быть входные данные ? Так ладно напиши пример того как должна работать программа по твоему
Да все очень просто. Нужно удалить числа, вроде 11, 22, 33...111, 222. Так, автор?
Да Да именно так, и ещё чтобы не выводил числа 151,174 и тд, ведь у них нет например строгого возрастания
Разработать программу, анализирующую числа. Программа должна выводить на экран все числа, в которых:
- Порядок цифр строго возрастающий;
- Порядок цифр строго убывающий.
Примеры:
- 12, 13, 14 ... 123, 124, 125... - вывести на печать;
- 11, 22, 33 ... 100, 121, 132... - не выводить на печать.
К сожалению, пока большим помочь не могу. Я понимаю, что нужно сделать, но как это реализовать, пока не знаю.
Код:
/* Фильтр направления роста цифр в записи числа
*
* Фильтр пропускает числа в которых:
* 1. цифры от старших разрядов числа к младшим
* непрерывно растут;
* 2. цифры от старших разрядов числа к младшим
* непрерывно убывают.
* В этих случаях фильтр возвращает не ноль. Иначе
* возвращается нулевое значение. Диапазон целых
* чисел регулируется константой itype.
*/
#include <iostream>
#define itype long long
using namespace std;
unsigned char directionFilter(itype iArg)
{
unsigned char fTag = 0;
unsigned char hDig, lDig;
while(iArg / 10)
{
lDig = iArg % 10;
hDig = (iArg / 10) % 10;
if(lDig == hDig) return 0;
if(lDig > hDig) fTag |= 1;
else fTag |= 2;
iArg /= 10;
}
if(fTag == 3) return 0;
else return 1;
}
int main(int argc, char** argv)
{
itype n;
cout << "Input n > 10: ";
cin >> n;
for(itype i = 10; i <= n; i++)
if(directionFilter(i))
cout << i << 't';
return 0;
}
*
* Фильтр пропускает числа в которых:
* 1. цифры от старших разрядов числа к младшим
* непрерывно растут;
* 2. цифры от старших разрядов числа к младшим
* непрерывно убывают.
* В этих случаях фильтр возвращает не ноль. Иначе
* возвращается нулевое значение. Диапазон целых
* чисел регулируется константой itype.
*/
#include <iostream>
#define itype long long
using namespace std;
unsigned char directionFilter(itype iArg)
{
unsigned char fTag = 0;
unsigned char hDig, lDig;
while(iArg / 10)
{
lDig = iArg % 10;
hDig = (iArg / 10) % 10;
if(lDig == hDig) return 0;
if(lDig > hDig) fTag |= 1;
else fTag |= 2;
iArg /= 10;
}
if(fTag == 3) return 0;
else return 1;
}
int main(int argc, char** argv)
{
itype n;
cout << "Input n > 10: ";
cin >> n;
for(itype i = 10; i <= n; i++)
if(directionFilter(i))
cout << i << 't';
return 0;
}
P.S. В cout вторым аргументом идет символ табуляции, но backslash здесь, почему-то, не отображается...