• Страница 1 из 1
  • 1
Помогите с кодом на С++
RevoRen
Дата: Среда, 19.01.2011, 23:14 | Сообщение # 1
говорун
Группа: Проверенные
Пользователь №: 3249
Сообщений: 214
Помогите с кодом. Идея кода: сделать арифметическую прогрессию. Есть первое число, есть конечное число, есть шаг прогрессии. Моя проблема сейчас в том, чтобы написать такую штучку, которая будет проверять, что если сделать от исходного числа несколько шагов, то получится конечное число, и выводить дальше результат, а если не получится число - выдать ошибку.
Напомню, шаг может быть и отрицательным.
Язык, разумеется, С++.

Вот код:

Code
#include <iostream>
#include <cmath>

using namespace std;

int main()
{
     double a, b, c, i, n, answer = a;
     cin >> a >> b >> c;
     if (a < b)
     {
         for (n = a; n <= b; n = n + c)
         {
         }
         if (n == b)
         {
             for (i = a; i <= b; i = i + c)
             {
                 answer = answer + i;
             }
             cout << answer << endl;
         }
         else if (n != b)
         {
             cout << "This progression can not exist, because some have a number of steps from the first day we did not, the last number can not be obtained." << endl;
         }
     }
     return 0;
}

Переменная а - это первое число, переменная b - последнее число, переменная с - последнее число.

Смотрим: сначала смотрим что значение а меньше, чем значение b (противоположную программу напишу позже). Далее цикл, который проверяет, действительно-ли если к значению n, которое равно а прибавлять значение шага, то есть с, то получится b.
Если значение n == b, то дальше просто выводим ответ, если n != b, то выводим ошибку.
Проблема в том, что мне компилятор всегда выводит ошибку, даже когда проверка верна.
Помогите пожалуйста.


Follow your Destiny

  
Infamous
Дата: Четверг, 20.01.2011, 08:01 | Сообщение # 2
говорун
Группа: Проверенные
Пользователь №: 316
Сообщений: 158
Получено оценок: 21
По-моему, всё делается проще и без циклов:

Code
double x = (b - a) / c; // Кол-во шагов C от A до B
if ( x == (int) x ) // Если кол-во шагов целое, т. е. double x равен int x, то …
   cout << x << endl;
else
   cout << "error" << endl;
// P.S. (int) x — это не ошибка, это приведение к целому типу.


Сообщение отредактировал Infamous - Четверг, 20.01.2011, 08:02
  
Chehoff
Дата: Четверг, 20.01.2011, 18:05 | Сообщение # 3
шептун
Группа: Проверенные
Пользователь №: 3290
Сообщений: 89
Вот этот код работает
Code
#include <stdio.h>
#include <iostream>
using namespace std;

int main(int nNumberofArgs, char* pString[])
{
  int a,s,d,n,e,flag;
  flag=0;
  n=0;
  cin>>a>>e>>d;
  while (n>=0)
  {
   n++;
   s=a+(n-1)*d;
   cout<< s <<"\n";
   if (s==e)
   {
    cout<< "Yes";
    break;
   }
   else
   {
    if (s>e)
    {
     cout<<"No";
     break;
    }
   }
  }
return 0;
}

Проверенно в Dev C++ 4.9.9.2 эть проще чем у вас


Кодер... Почти быдлокодер...
  
Chehoff
Дата: Четверг, 20.01.2011, 18:23 | Сообщение # 4
шептун
Группа: Проверенные
Пользователь №: 3290
Сообщений: 89
Блин этот код толко для положительного.
Да и ваш код работает.


Кодер... Почти быдлокодер...

Сообщение отредактировал Chehoff - Четверг, 20.01.2011, 18:31
  
Chehoff
Дата: Пятница, 21.01.2011, 18:48 | Сообщение # 5
шептун
Группа: Проверенные
Пользователь №: 3290
Сообщений: 89
Что бы с минусом работать цикл на до изменить с
Code
  while (n>=0)
    {
     n++;
     s=a+(n-1)*d;
     cout<< s <<"\n";
     if (s==e)
     {
      cout<< "Yes";
      break;
     }
     else
     {
      if (s>e)
      {
       cout<<"No";
       break;
      }
     }
    }

на
Code
  while (n>=0)
    {
     n++;
     s=a+(n-1)*d;
     cout<< s <<"\n";
     if (s==e)
     {
      cout<< "Yes";
      break;
     }
     else
     {
      if (s<e) //Здесь
      {
       cout<<"No";
       break;
      }
     }
    }

Потому что гладиолус


Кодер... Почти быдлокодер...

Сообщение отредактировал Chehoff - Пятница, 21.01.2011, 18:51
  
MegaFill
Дата: Суббота, 22.01.2011, 21:15 | Сообщение # 6
шептун
Группа: Проверенные
Пользователь №: 3260
Сообщений: 79
Получено оценок: 8
А тут никто случаем не знает Managed c++? (Короче с той херней, которая появлятеся при наборе в Visual c++ -> CLR -> Приложение WIndow Form)

Мой моушенhttp://vimeo.com/megafill
Креатив http://dailycreative.ru/
Веб разработка и тп http://devshack.ru/
  
Chehoff
Дата: Воскресенье, 23.01.2011, 11:49 | Сообщение # 7
шептун
Группа: Проверенные
Пользователь №: 3290
Сообщений: 89
Приложение WIndow Form на C++ только Builder что бы не парить мозги. Только у C# нормальный WIndow Form

Кодер... Почти быдлокодер...
  
  • Страница 1 из 1
  • 1
Поиск:
© Studioad.ru 2006 · 2010. Использование материалов форума на сторонних ресурсах без прямой обратной ссылки строго запрещено. Хостинг от uCoz.