Задача. Перевод с "си++" на "си" - C (СИ)
Формулировка задачи:
Есть задача:
Ввести с клавиатуры целое положительное число N. Найти все натуральные числа, не превышающие заданного значения N, десятичная запись которых является возрастающей последовательностью цифр(123,258 и т.д.). Найденные числа вывести на экран монитора.
Вопрос вот в чем: сначала я написал программу на си++ и все работало отлично. Но потом узнал, что задачу надо было написать на си и перевел ее. Так вот, на с++ в консоли все выводится так как надо: (смотреть вложенный файл с++.png)
А на си все это выглядит неупорядоченно: (смотреть си.png)
Как сделать так, чтоб на си выглядело так же как и на си++? И на си, если вбивать число больше 350 например, вывод начинается не сначала, как будто консоль ограничена в символах.
вот сообственно код на си++
и код на си:
#include <iostream> //подключение библиотек
#include <conio.h>
#include <stdlib.h>
using namespace std;
int main() //начало программы
{
int N,i,k,a,b; //объявление переменных
bool f;
cout<<"Enter N "; //вывод сообщения на экран
cin>>N; //ввод (считывание) переменной
if (N<12) //условие: если ...
cout<<"Net takix cifr"; //то выводится сообщение на экран
else //иначе
{
cout<<"Reshenie"<<"\n"; //выводится сообщение на экран
for (i=12;i<N-1;i++) //цикл
{
f=true; //присваиваем переменной f значение true
k=i;
a=k%10; //a - остаток от деления
k=k/10; //k - челая часть от деления
while (k>0 && f) //цикл - пока k>0 и f=true
{
b=k%10; //b - остаток от деления
if (b>=a) f=false; //условие
else //иначе
{
a=b;
k=k/10;
}
}
if (f) cout<<i<<"\n"; //если f=true выводим число на экран
}
}
getch(); //задержка экрана#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
int main()
{
int N,i,k,a,b; //объявление переменных
bool f;
printf("Enter N "); //вывод сообщения на экран
scanf("%d",&N); //ввод (считывание) переменной
if (N<12) //условие: если ...
printf("Net takix cifr"); //то выводится сообщение на экран
else //иначе
{
printf("Reshenie "); //выводится сообщение на экран
printf("\n");
for (i=12;i<N-1;i++) //цикл
{
f=true; //присваиваем переменной f значение true
k=i;
a=k%10; //a - остаток от деления
k=k/10; //k - челая часть от деления
while (k>0 && f) //цикл - пока k>0 и f=true
{
b=k%10; //b - остаток от деления
if (b>=a) f=false; //условие
else //иначе
{
a=b;
k=k/10;
}
}
if (f) printf("%d",i); //если f=true выводим число на экран
printf("\n");
}
}
getch(); //задержка экрана
}Решение задачи: «Задача. Перевод с "си++" на "си"»
textual
Листинг программы
if (f) printf("%d\n",i);
Объяснение кода листинга программы
- Переменная
fиспользуется в условии if. - Если
fравно true, то выполняется блок кода внутри if. - Внутри блока кода происходит вызов функции printf.
- Функция printf принимает два аргумента: строку и целое число.
- В данном случае, в качестве первого аргумента используется строка
%d\n, которая указывает на формат вывода. - Второй аргумент - это целое число
i. - Выполняется вывод на экран строки и числа.
- Если
fравно false, то блок кода внутри if не выполняется. - Никакие другие действия в коде не выполняются.