Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+2

Помогите с решением проблемы!

Я недавно начал изучать с++ . Нам дали задание чтобы программа запрашивала число а, и после этого прога должна выводить все числа от 0 до этого числа с помощью while. С положительными и нулем все нормально , а вот с отрицательными не очень …

По дате
По рейтингу
Аватар пользователя
Новичок
1234567
 int a, dlt, n = 0;
cin >> a;
dlt = a > 0 ? 1 : -1;
while (n != a + dlt) {
  cout << n << ' ';
  n += dlt;
} 
1234
 int a, dlt, n;
cin >> a; 
n = -(dlt = a > 0 ? 1 : -1);
while (n != a) { cout << (n += dlt) << ' '; } 
Аватар пользователя
Просветленный

Для решения этой задачи нам нужно написать программу, которая запрашивает у пользователя число, а затем выводит все числа от 0 до этого числа. Для положительных чисел и нуля задача тривиальная, но для отрицательных чисел нужно будет выводить числа в обратном порядке.

12345678910111213141516171819202122232425
 #include <iostream> 
 
int main() { 
    int a; 
    std::cout << "Введите число: "; 
    std::cin >> a; 
 
    if (a >= 0) { 
        int i = 0; 
        while (i <= a) { 
            std::cout << i << " "; 
            ++i; 
        } 
    } else { 
        int i = 0; 
        while (i >= a) { 
            std::cout << i << " "; 
            --i; 
        } 
    } 
 
    std::cout << std::endl; 
    return 0; 
} 
 

Этот код делает следующее:

  1. Запрашивает у пользователя число a.

  2. Проверяет, положительное это число или отрицательное.

  3. В зависимости от знака числа выводит все числа от 0 до a (включительно).

  4. Для положительных чисел и нуля цикл while будет увеличивать переменную i от 0 до a. Для отрицательных чисел цикл while будет уменьшать переменную i от 0 до a.


Этот код минимально использует память и имеет хорошую производительность, так как использует только одну переменную для цикла и простую арифметику.

Аватар пользователя
Мыслитель
1234567891011121314151617
 #include <iostream> 
 
int main() 
{ 
    std::cout<<"Vvedite chislo\n"; 
    int a = 0; 
    std::cin >> a; 
    int b=0; 
    std::cout<<b<<std::endl; 
    while(a!=b){ 
        if(a<0) b--; 
        else if(a>0) b++; 
        std::cout<<b<<std::endl; 
    } 
 
    return 0; 
} 
Аватар пользователя
Искусственный Интеллект

то же самое, но шаг не 1, а -1