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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.12.2010, 01:22   #1
revaldo666
Форумчанин
 
Регистрация: 24.06.2010
Сообщений: 251
По умолчанию цикл while

Добрый всем вечер
Прошу помощи, чтото немогу додумать как сделать такое задание...
Написать программу, которая находит сумму всех целых нечетных чисел, в диапазоне, указанном пользователем.
Вот до чего додумал.
Код:
int a,b,c=1;
	cout<<"задайте диапазон:"<<endl;
	cout<<"от ";
	cin>>a;
	cout<<"до ";
	cin>>b;
	while(c<=a&&b){
заранее благодарен
revaldo666 вне форума Ответить с цитированием
Старый 26.12.2010, 01:35   #2
UltimaBeaR
Форумчанин
 
Аватар для UltimaBeaR
 
Регистрация: 21.12.2010
Сообщений: 199
По умолчанию

Код:
int a, b, c = 1;

cout << "задайте диапазон:"<<endl;
cout << "от ";
cin >> a;
cout << "до ";
cin >> b;

if (a == b)
	return;

// если a > b - меняем их местами
if (a > b)
{
	c = a;
	a = b;
	b = c;
}

// массив со значениями которые будем суммировать
float *values = new float[b-a];

// ToDo: заполнить массив изначальными данными (сделать ввод пользователем)

// сумма вначале ставится = 0
c = 0;

// проходим по диапазону
for (; a < b; a++)
{
	// если целое
	if ((int)values[a] == values[a])
	{
		// если значение нечетное то прибавляем его к сумме
		if (values[a] % 2 != 0)
			c += values[a];
	}
}

delete [] values;

cout << c;

Последний раз редактировалось UltimaBeaR; 26.12.2010 в 01:37.
UltimaBeaR вне форума Ответить с цитированием
Старый 26.12.2010, 01:37   #3
revaldo666
Форумчанин
 
Регистрация: 24.06.2010
Сообщений: 251
По умолчанию

Цитата:
Сообщение от UltimaBeaR Посмотреть сообщение
Код:
int a, b, c = 1;

cout << "задайте диапазон:"<<endl;
cout << "от ";
cin >> a;
cout << "до ";
cin >> b;

if (a == b)
	return;

// если a > b - меняем их местами
if (a > b)
{
	c = a;
	a = b;
	b = c;
}

// массив со значениями которые будем суммировать
float *values = new float[b-a];

// ToDo: заполнить массив изначальными данными (сделать ввод пользователем)

// сумма вначале ставится = 0
c = 0;

// проходим по диапазону
for (; a < b; a++)
{
	// если целое
	if ((int)values[a] == values[a])
	{
		// если значение нечетное то прибавляем его к сумме
		if (values[a] % 2 != 0)
			c += values[a];
	}
}

delete [] values;

cout >> c;
а без массива это возможно сделать?и нес циклом for a while?

Последний раз редактировалось revaldo666; 26.12.2010 в 01:39.
revaldo666 вне форума Ответить с цитированием
Старый 26.12.2010, 01:45   #4
UltimaBeaR
Форумчанин
 
Аватар для UltimaBeaR
 
Регистрация: 21.12.2010
Сообщений: 199
По умолчанию

А что ты будешь суммировать если у тебя массива небудет? воздух?

с вайлом можно сделать меняешь то что есть сейчас:
Код:
for (; a < b; a++)
{
    код
}
на

Код:
while(a < b)
{
    код

    a++;
}
зы : ошибочка вышла, перед циклом надо прописать
b -= a;
a = 0;

Последний раз редактировалось UltimaBeaR; 26.12.2010 в 01:47.
UltimaBeaR вне форума Ответить с цитированием
Старый 26.12.2010, 02:08   #5
revaldo666
Форумчанин
 
Регистрация: 24.06.2010
Сообщений: 251
По умолчанию

Цитата:
Сообщение от UltimaBeaR Посмотреть сообщение
А что ты будешь суммировать если у тебя массива небудет? воздух?

с вайлом можно сделать меняешь то что есть сейчас:
Код:
for (; a < b; a++)
{
    код
}
на

Код:
while(a < b)
{
    код

    a++;
}
зы : ошибочка вышла, перед циклом надо прописать
b -= a;
a = 0;
спасибо огромное....зы насчёт массива....просто мы их ещё неучили задание дали с использованием вайла и ифа...вот поэтому и завис немного))
revaldo666 вне форума Ответить с цитированием
Старый 26.12.2010, 02:32   #6
UltimaBeaR
Форумчанин
 
Аватар для UltimaBeaR
 
Регистрация: 21.12.2010
Сообщений: 199
По умолчанию

А все я врубился тебе надо посчитать сумму чисел входящих в этот диапазон ) вот тогда так:

Код:
float a, b;
int intA, intB, c;

cout << "задайте диапазон:"<<endl;
cout << "от ";
cin >> a;
cout << "до ";
cin >> b;

if (a == b)
	return;

// если a > b - меняем их местами
if (a > b)
{
	c = a;
	a = b;
	b = c;
}

// сумма вначале ставится = 0
c = 0;

// устанавливаем intA = a, округленную в большую сторону
intA = (int)a;
if (intA != a)
	intA++;

// устанавливаем intB = b, округленная в меньшую сторону
intB = (int)b;

// проходим по диапазону
while (intA < intB)
{
	// если значение нечетное то прибавляем его к сумме
	if (intA % 2 != 0)
		c += intA;

	intA++;
}

cout << c;

Последний раз редактировалось UltimaBeaR; 26.12.2010 в 02:35.
UltimaBeaR вне форума Ответить с цитированием
Старый 26.12.2010, 02:47   #7
revaldo666
Форумчанин
 
Регистрация: 24.06.2010
Сообщений: 251
По умолчанию

Спасибо огромнейшее))
Выручил
Терь разбиратсо буду что куда))
revaldo666 вне форума Ответить с цитированием
Старый 26.12.2010, 07:38   #8
Mixim
Форумчанин
 
Регистрация: 29.10.2009
Сообщений: 259
Сообщение

Цитата:
Сообщение от revaldo666 Посмотреть сообщение
Код:
int a,b,c=1;
	cout<<"задайте диапазон:"<<endl;
	cout<<"от ";
	cin>>a;
	cout<<"до ";
	cin>>b;
	while(c<=a&&b){
Может быть так:
Код:
int A,B;
long int Sum = 0;
	cout<<"задайте диапазон:"<<endl;
	cout<<"от ";
	cin>>A;
	cout<<"до ";
	cin>>B;
if(a>b)   //если A - правая граница диапазона
  {
     int tmp = A;   //сохранить A во временной переменной tmp
     A = B;   //A сделать левой границей
     B = tmp;   //B сделать правой границей
  }

while(A<=B)   //пока левая граница не ушла за правую
{
   if(A%2!=0)   //если остаток от деления A на 2 не равен нулю(число нечетное)
      Sum+=A;   //прибавить к суммирующей переменной значение A
   A++;   //увеличить значение A на единицу
}
Можно на порядок оптимизировать этот код(сделать количество проходов цикла while равным не (A-B), а ((A-B)/2)), для этого нужно прописать ещё одно условие(ничего трудного нет), но это уж думаю сам сделать сможешь
Из всех классических книг, посвященных программированию, ненавижу всего одну - русский перевод книги Роберта Седжвика-"Фундаментальные алгоритмы C++". Предпочитаю читать её в оригинале.
Mixim вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Цикл по времени - Как сделать так чтобы цикл выполнялся к примеру 10 секунд ? Anarki Общие вопросы C/C++ 3 13.11.2009 19:23
Цикл Cheerful-mermaid Помощь студентам 2 10.04.2009 14:44
Цикл с предусловием. ( цикл while) Цикл с постусловием. (цикл repeat ... until) Mr.User Помощь студентам 9 23.11.2007 01:34