Консультация № 185491
24.02.2012, 11:42
0.00 руб.
25.02.2012, 15:26
0 24 2
Уважаемые эксперты! Пожалуйста, помогите решить задачи из Задачника М. Э. Абрамяна , раздел While.

While2. Даны положительные числа A и B (A > B). На отрезке длины A размещено максимально возможное количество отрезков длины B (без наложений). Не используя операции умножения и деления, найти количество отрезков B, размещенных на отрезке A.

While3. Даны целые положительные числа N и K. Используя только операции сложения и вычитания, найти частное от деления нацело N на K, а также остаток от этого деления. n = a*k + b

While5. Дано целое число N (> 0), являющееся некоторой степенью числа 2: N = 2^K. Найти целое число K — показатель этой степени.

While30. Даны положительные числа A, B, C. На прямоугольнике размера A > B размещено максимально возможное количество квадратов со стороной C (без наложений). Найти количество квадратов, размещенных на прямоугольнике. Операции умножения и деления не использовать.

Спасибо.

Обсуждение

Неизвестный
24.02.2012, 11:43
общий
25.02.2012, 13:34
это ответ
Здравствуйте, lamed! Ответ на Ваш вопрос. Code::Blocks/G++
Код:
/*While5. Дано целое число N (> 0), являющееся некоторой степенью числа
2: N = 2^K. Найти целое число K — показатель этой степени.*/
#include <iostream>
using namespace std;
int main()
{
int n;
cin>>n;

int x=1;
int k=0;

while (x<n)
{
++k;
x*=2;
}
cout << "2^"<<k<<"="<<n << endl;
return 0;
}

c уважением!
4
Спасибо!
Неизвестный
24.02.2012, 11:47
общий
25.02.2012, 13:19
это ответ
Здравствуйте, lamed!
Код:
/**-------------------Задание------------------
* While2.
* Даны положительные числа A и B (A > B).
* На отрезке длины A размещено максимально возможное количество отрезков длины B (без наложений).
* Не используя операции умножения и деления, найти количество отрезков B, размещенных на отрезке A.
-----------------------------------------------
*/
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
int a,b,x=0;
system("chcp 1251 > nul");
cout << "Введите a-";
cin >> a;
cout << "Введите b-";
cin >> b;
while (a>=b)
{
a-=b;
x++;
}
cout << x << " количество отрезков длины B (без наложений)." ;
return 0;
}

5
Спасибо, Антон!
давно
Академик
320937
2216
24.02.2012, 11:49
общий
Добрый день! Ответ неверный. Укажите ошщибку и Выложите правильный ответ в мини-форум. Срок - до субботы.
давно
Академик
320937
2216
24.02.2012, 11:51
общий
Добрый день! Ответ непонятный. Отредактируйте, пожалуйста, до субботы.
Неизвестный
24.02.2012, 11:57
общий
Адресаты:
Добрый День!
Код:

/*While3. Даны целые положительные числа N и K. Используя только операции
сложения и вычитания, найти частное от деления нацело N на K, а также остаток
от этого деления.
n = a*k + b */
#include <iostream>
using namespace std;
int main()
{
int n, k, a, b;
cin>>n;
cin>>k;
b=n;
a=0;
while (b>=k)
{
b-=k;
a++;
}
cout<<n<<"="<<a<<"*"<<k<<"+"<<b<<endl;
return 0;
}

С Уважением, Андрей!
давно
Академик
320937
2216
24.02.2012, 11:58
общий
Добрый день, Антон, используйте BBCode!
Неизвестный
24.02.2012, 12:00
общий
Исправил ошибку!!
Код:

/*While5. Дано целое число N (> 0), являющееся некоторой степенью числа
2: N = 2^K. Найти целое число K — показатель этой степени.*/
#include <iostream>
using namespace std;
int main()
{
int n;
cin>>n;

int x=2;
int k=1;

while (x<n)
{
++k;
x*=2;
}
cout << "2^"<<k<<"="<<n << endl;
return 0;
}
давно
Академик
320937
2216
24.02.2012, 12:21
общий
24.02.2012, 12:21
Сергей Андреевич, программа выдает
Код:
2^1=1.
Ищите до субботы:)
Неизвестный
24.02.2012, 15:25
общий
24.02.2012, 22:32
Здравствуйте, lamed!! Переделал
Код:

/*While5. Дано целое число N (> 0), являющееся некоторой степенью числа
2: N = 2^K. Найти целое число K — показатель этой степени.*/
#include <iostream>
using namespace std;
int main()
{
int n;
cin>>n;

int x=2;
int k=1;
if (n==1)
{
k=0;
}
else
{
while (x<n)
{
++k;
x*=2;
}
}
cout << "2^"<<k<<"="<<n << endl;
return 0;
}


давно
Академик
320937
2216
24.02.2012, 15:35
общий
Сергей Андреевич, можно обойтись без if.
Неизвестный
24.02.2012, 15:38
общий
24.02.2012, 16:24
Здравствуйте, lamed!! Переделал

Код:

/*While5. Дано целое число N (> 0), являющееся некоторой степенью числа
2: N = 2^K. Найти целое число K — показатель этой степени.*/
#include <iostream>
using namespace std;
int main()
{
int n;
cin>>n;

int x=2;
int k=0; // Нашел ошибку

while (x<n)
{
++k;
x*=2;
}
cout << "2^"<<k<<"="<<n << endl;
return 0;
}
return 0;
}
давно
Академик
320937
2216
24.02.2012, 15:44
общий
Сергей Андреевич! В пост вкралась ошибка, двойной return. Не компилируется.
Неизвестный
24.02.2012, 17:28
общий
Вроде теперь все окей!!!!
Код:

/*While5. Дано целое число N (> 0), являющееся некоторой степенью числа
2: N = 2^K. Найти целое число K — показатель этой степени.*/
#include <iostream>
using namespace std;
int main()
{
int n;
cin>>n;

int x=2;
int k=0;

while (x<n)
{
++k;
x*=2;
}
cout << "2^"<<k<<"="<<n << endl;
return 0;
}
давно
Академик
320937
2216
24.02.2012, 22:27
общий
Выдает 2^2=8. Опять не угадали :)
давно
Академик
320937
2216
24.02.2012, 22:33
общий
А если все же введем a<b, выдает 1, а должна 0.
Неизвестный
24.02.2012, 22:55
общий
24.02.2012, 22:56
Адресаты:
Код:

/**-------------------Задание------------------
* While2°.
* Даны положительные числа A и B (A > B).
* На отрезке длины A размещено максимально возможное количество отрезков длины B (без наложений).
* Не используя операции умножения и деления, найти количество отрезков B, размещенных на отрезке A.
-----------------------------------------------
*/
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
int a,b,x=0;
system("chcp 1251 > nul");
cout << "a=";
cin >> a;
cout << "b=";
cin >> b;
while (a>b)
{
a-=b;
x++;
}
cout << x << " количество отрезков длины B (без наложений)." ;

return 0;
}

Нашел ошибку, исправил.
давно
Академик
320937
2216
24.02.2012, 23:53
общий
Антон, если введем a и b одинаковые, получим 0
Неизвестный
25.02.2012, 01:35
общий
вроде так
Код:

/*While5. Дано целое число N (> 0), являющееся некоторой степенью числа
2: N = 2^K. Найти целое число K — показатель этой степени.*/
#include <iostream>
using namespace std;
int main()
{
int n;
cin>>n;

int x=2;
int k=0;

do
{
++k;
x*=2;
}
while (x<n+1);
cout << n << "~2^"<< k << endl; // ~ Знак приблезитьлено
return 0;
}

давно
Академик
320937
2216
25.02.2012, 09:17
общий
Сергей, предлагаю эту задачу рассмотреть на занятиях.
Неизвестный
25.02.2012, 12:22
общий
Адресаты:
Код:

/**-------------------Задание------------------
* While2°.
* Даны положительные числа A и B (A > B).
* На отрезке длины A размещено максимально возможное количество отрезков длины B (без наложений).
* Не используя операции умножения и деления, найти количество отрезков B, размещенных на отрезке A.
-----------------------------------------------
*/
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
int a,b,x=0;
system("chcp 1251 > nul");
cout << "Введите a-";
cin >> a;
cout << "Введите b-";
cin >> b;
while (a>=b)
{
a-=b;
x++;
}
cout << x << " количество отрезков длины B (без наложений)." ;

return 0;
}

Исправил.
Неизвестный
25.02.2012, 12:39
общий
Код:
/*--------------------------------------------------------------------Задание----------------------------------------------------------------------------
While30. Даны положительные числа A, B, C.
На прямоугольнике размера A > B размещено максимально возможное количество квадратов
со стороной C (без наложений). Найти количество квадратов, размещенных на прямоугольнике.
Операции умножения и деления не использовать.
Выполнил: Маслаков Алексей.
-------------------------------------------------------------------------------------------------------------------------------------------------------*/
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
int a,b,c,i,s,t;
system ("chcp 1251>nul");
cout<<"введите числа а, b, c - "<<endl;
cin>>a>>b>>c;
i=0;
s=t=c;
while (a>=t)
{
s=c;
while (b>=s)
{
i++;
s=s+c;
}
t=t+c;
}
cout<<"максимальное количество квадратов со стороной С на прямоугольнике со сторонами А и В-"<<i<<endl;

return 0;
}
Неизвестный
25.02.2012, 12:39
общий
Можно и на занятиях!!!
А array я неправильно переделал?
давно
Академик
320937
2216
25.02.2012, 13:22
общий
Добрый день, Алексей Юрьевич! Скорей всего, Вы зарегистрировались позже, чем был задан вопрос, поэтому ответить не получилось. Сообщение в мини-форуме принимается.
давно
Академик
320937
2216
25.02.2012, 13:37
общий
Наталья Дмитриевна, неясно, что делает программа. Пост удаляю, чтобы народ не пугать.
Форма ответа