Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.03.2011, 22:10   #1
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,385
По умолчанию C++ простая программа с циклом и неверный результат

Дорогие форумчане!
Простейшая программа, прямо для школьников, а я не могу сообразить, как написать условие для верного результата.

Программа на цикл while
Задача: Даны два отрезка А и B (меньше А). На отрезке длины A
размещено максимально возможное количество отрезков
длины B . Не используя деления и умножения, найдите незанятую часть отрезка А.

И вот я для контрольного теста беру А=10, В=3, и мне программа выдает конечно же -2...... То есть, по идее, на один ход цикла должно быть меньше, чтобы выдала остаток 1. Но как я не кручу, от все упрямо твердит -2

Код:
#include <iostream>
#include <conio.h>
#include <stdio.h>

using namespace std;

int main ()

{
double A=0, B=0, S=1; //A bolshoi otrezok, B-maliy itresok, S - nezanjataja chast otrezka A

cout<<"Vvedite A"<<endl;
cin>>A;
cout<<"vvedite B (menshe A)"<<endl;
cin>>B;

do
{
	for(int i=0;A>=B;i++)
	{
		A=A-B;
		S=A-B;

	}

}
while (S>=0);

cout<<S<<endl;

_getch ();
return 0;

}
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Blondy вне форума Ответить с цитированием
Старый 31.03.2011, 22:19   #2
BoozZzilla
Форумчанин
 
Аватар для BoozZzilla
 
Регистрация: 26.01.2009
Сообщений: 125
По умолчанию

Код:
do
{
	for(int i=0;A-B>=0;i++)
	{
		A=A-B;
		S=A-B;

	}

}
BoozZzilla вне форума Ответить с цитированием
Старый 31.03.2011, 22:26   #3
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,385
По умолчанию

Я так тоже пробовала.. все равно -2...
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Blondy вне форума Ответить с цитированием
Старый 31.03.2011, 22:32   #4
kaljan775
:D
Форумчанин
 
Аватар для kaljan775
 
Регистрация: 26.09.2010
Сообщений: 570
По умолчанию

Код:
void functionWhile(){
	float A,B;
	A=10;
	B=3;
	float ostat=A;
	while(ostat>B)
		ostat -= B;
	cout<<ostat<<endl;
}
учител, я правильно сделал?
Пишу ПО, создаю сайты, делаю курсовые работы, за деньги
C#, .NET, MS SQL, AngularJS, HTML, jQuery
kaljan775 вне форума Ответить с цитированием
Старый 31.03.2011, 22:39   #5
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,385
По умолчанию

Даааааааааааааааааааа)) Спасибо)))))))))) Это 5)))))
Теперь я буду соображать как немного переделать..учитель ни за что не поверит что я до думалась сама до "ostat -= B"))))))
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Blondy вне форума Ответить с цитированием
Старый 31.03.2011, 22:42   #6
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Цитата:
Сообщение от kaljan775 Посмотреть сообщение
Код:
    ...
    while(ostat>B)
        ostat -= B;
    cout<<ostat<<endl;
    ...
учител, я правильно сделал?
Почти...
>=
Vago вне форума Ответить с цитированием
Старый 31.03.2011, 22:48   #7
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,385
По умолчанию

Ребята, спасибо))
А я все вокруг переменной А крутилась и так и сяк... вот что значит мужская голова)))
В результате реализация цикла (версия в исполнеии блондинки):
Код:
S=A;
while (S>=B)
{
//S-=B;
	S=S-B;
}


cout<<S<<endl;
Но Ваш хитрый ход с S-=B я возьму на вооружение..... Это ведь по-научному называется декриментированием, да?)))
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Blondy вне форума Ответить с цитированием
Старый 31.03.2011, 22:50   #8
kaljan775
:D
Форумчанин
 
Аватар для kaljan775
 
Регистрация: 26.09.2010
Сообщений: 570
По умолчанию

да нет, декремент это B--, а -= - это обычное вычитание, только чтобы 2 раза не писать B
Пишу ПО, создаю сайты, делаю курсовые работы, за деньги
C#, .NET, MS SQL, AngularJS, HTML, jQuery
kaljan775 вне форума Ответить с цитированием
Старый 31.03.2011, 23:25   #9
Сtrl
C++
Форумчанин
 
Аватар для Сtrl
 
Регистрация: 27.03.2011
Сообщений: 803
По умолчанию

Что за остаток? Не дело это...

Код:
int residue (int A, int B)
{
	while (true)
	{
		if (A - B >= 0)
			A -= B;
		else
			return A;
	}
}
Ищете информацию по C++?
cplusplus.com

Последний раз редактировалось Сtrl; 31.03.2011 в 23:35.
Сtrl вне форума Ответить с цитированием
Старый 31.03.2011, 23:29   #10
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,385
По умолчанию

Ой, какой изящный ход))))Спасибо огромное))) Тоже пригодится))
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Blondy вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Неверный результат запроса S@fer БД в Delphi 5 08.02.2011 14:06
Запрос выдает неверный результат Sergio_O БД в Delphi 14 13.01.2011 12:17
Почему сумма выдает неверный результат? KNatalia Microsoft Office Excel 4 26.05.2010 14:50
Простая программа с циклом на с++ Olya90 Помощь студентам 3 23.03.2009 20:32
В чем ошибка в запросе?неверный результат =( Lunatikus SQL, базы данных 3 26.11.2007 09:50