Решение модуля 1.5 Введение в программирование C++

Модуль 1.5 (Цикл while) Данный модуль научит писать код, который позволяет автоматически повторять одни и те же действия несколько раз. В программировании повторение действий называется циклом.

Ниже представлены примеры задач с решением на C++ на тему Цикл while.

По данному целому числу N распечатайте все квадраты натуральных чисел, не превосходящие N, в порядке возрастания.

#include <iostream>
#include<cmath>
using namespace std;

int main()
{
	int n, i;
	cin >> n;
	i = 1;
	while (pow(i, 2) <= n) {
		cout << pow(i, 2) << " ";
		i += 1;
	}
	return 0;
}

Дано целое число, не меньшее 2. Выведите его наименьший натуральный делитель, отличный от 1.

#include <iostream>
#include <cmath>
using namespace std;

int MinDivisor(int n,int d=2){
  if (d <= sqrt(n)){
  if (n%d == 0){ return d; }
  else MinDivisor(n, d + 1);
  }
    else return n;
}
int main(){
  int n;
  cin >> n;
  cout << MinDivisor(n);
  return 0;
}

По данному числу N распечатайте все целые степени двойки, не превосходящие N, в порядке возрастания.

#include <iostream>
#include<cmath>
using namespace std;

int main()
{
	int n, i;
	cin >> n;
	i = 0;
	while (pow(2,i) <= n) {
		cout << pow(2, i) << " ";
		i += 1;
	}
	return 0;
}

Дано натуральное число N. Выведите слово YES, если число N является точной степенью двойки, или слово NO в противном случае.

#include <iostream>
#include<cmath>
using namespace std;

int main()
{
	int n, i;
	cin >> n;
	i = 0;
	while (i <= 100) {
		if (pow(2, i) == n) {
			cout <<"YES";
			break;
		}
		i += 1;
		if (i == 100) {
			cout << "NO";
		}
	}
	return 0;
}

Программа получает на вход последовательность целых неотрицательных чисел, каждое число записано в отдельной строке. Последовательность завершается числом 0, при считывании которого программа должна закончить свою работу и вывести количество членов последовательности (не считая завершающего числа 0).
Числа, следующие за числом 0, считывать не нужно.

#include <iostream>
#include<cmath>
using namespace std;

int main()
{
	int n, i;
	n = 1;
	i = 0;
	while (n != 0) {
		cin >> n;
		i += 1;
	}
	cout << i-1;
	return 0;
}

Определите сумму всех элементов последовательности, завершающейся числом 0.

#include <iostream>
#include<cmath>
using namespace std;

int main()
{
	int n, sum;
	n = 1;
	sum = 0;
	while (n != 0) {
		cin >> n;
		sum += n;
	}
	cout << sum;
	return 0;
}

Последовательность состоит из натуральных чисел и завершается числом 0. Определите значение наибольшего элемента последовательности.

#include <iostream>
using namespace std;

int main()
{
    int max,a;
    cin>>a;
    max=a;
    while (a!=0){
        if  (a>max)
            max=a;
        cin>>a;
    }
    cout<<max;
  return 0;
}

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

#include <iostream>
#include<cmath>
using namespace std;

int main()
{
	int n, max,i;
	i = 0;
	n = 1;
	max = -1000;
	while (n != 0) {
		cin >> n;
		if (max < n) {
			max = n;
			i = 1;
		}
		else if (max == n) {
			i += 1;
		}
	}
	cout << i;
	return 0;
}

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

#include <iostream>
using namespace std;
int main() {
int i, n, m = 1;
  cin >> n;
  i = n;
  while (n != 0) {
      cin >> n;
          if (n >= i){
            m = i;
          i = n;
          }
      else if (n >= m)
      {
            m = n;
    }
      else
      {
      continue;
    }
  }
  cout << m;
  return 0;
}

Последовательность Фибоначчи определяется так:

F(0) = 0, F(1) = 1, …, F(n) = F(n−1) + F(n−2).

По данному числу N определите N-е число Фибоначчи F(N).

#include <iostream>
#include<cmath>
using namespace std;

int main()
{
	int n, f1, f2, i, tmp;
	cin >> n;
	i = 3;
	f1 = 1;
	f2 = 1;
	while (i <= n) {
		tmp = f1 + f2;
		f1 = f2;
		f2 = tmp;
		i += 1;
	}
	cout << f2;
	return 0;
}

Последовательность Фибоначчи определяется так: 

F(0) = 0, F(1) = 1, …, F(n) = F(n−1) + F(n−2).

Дано натуральное число A. Определите, каким по счету числом Фибоначчи оно является, то есть выведите такое число N, что F(N) = A. Если А не является числом Фибоначчи, выведите число -1.

#include <iostream>
using namespace std;

int main() {
  int N, f2 = 2, f1 = 1, i = 1, d = 0;
  cin >> N;
  while (i<=N) {
      if (N == i) {
      cout << f2; 
      return 0;
      }
      f2++;
      d = i;
      i+= f1;
      f1 = d;
  }
  cout << -1;
}

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

#include <iostream>
using namespace std;

int main() {
    int a = 1, p = 1, n = 0, i = 0;
    while (a != 0) {
        cin >> a;
        if (a == n) {
            p++;
        }
        if (i < p) {
            i = p;
        }
        if (a != n) {
            p = 1;
        }
        n = a;
    }
    cout << i;

    return 0;
}

Элемент последовательности называется локальным максимумом, если он строго больше предыдущего и последующего элемента последовательности. Первый и последний элемент последовательности не являются локальными максимумами.

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

#include <iostream>

using namespace std;

int main()
{
	int a,b=0,c=0,d=0;
	while (cin>>a && a!=0)
	{
		if (b>a && b>c && c!=0) d++;
		c=b;
		b=a;
	}
	cout<<d;
}

Определите наименьшее расстояние между двумя локальными максимумами последовательности натуральных чисел, завершающейся числом 0. Если в последовательности нет двух локальных максимумов, выведите число 0.

Начальное и конечное значение при этом локальными максимумами не считаются.

Расстоянием считается количество пробелов между элементами. В качестве примера смотрите первый тест.

#include<iostream>
using namespace std;
int main() {
  int prv, cur, nxt, pos = 0, prv_max = 0, min_len = 0, cur_len;
  int count = 0;
  if (cin>>prv && prv)
  {
    if (cin >> cur && cur)
    {
      if (cin >> nxt)
      {
        pos = 2;
        while (nxt)
        {
          if ((prv < cur) && (cur > nxt))
          {
            if (prv_max != 0 )
            {
              cur_len = pos - prv_max;
              if (min_len == 0)
                min_len = cur_len;
              else
                min_len = min(min_len,cur_len);
            }
            prv_max = pos;
          }
          prv = cur;
          cur = nxt;
          cin >> nxt;
          pos++;

        }
      }
    }
  }
  cout<<min_len;
return 0;
}

Если у вас не отображается решение последних задач, значит у вас включен блокировщик рекламы который вырезает эти ответы

Понравилась статья? Поделиться с друзьями:
Подписаться
Уведомить о
guest

1 Комментарий
Новые
Старые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
yfp
yfp
1 год назад

По данному числу k выведите все пары дружественных чисел, каждое из которых не превосходит k.c++

1
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x