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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.01.2014, 23:47   #1
программирование
Форумчанин
 
Регистрация: 22.04.2013
Сообщений: 162
Восклицание если 3 переменные вещественного типа упорядочены по возрастанию или убыванию, то удвоить их C++

доброй ночи, уважаемые программисты и успевающие в учебе студенты. помогите, пожалуйста, написать программу на C++ (в визуальной вкладке).

ВОТ ЗАДАНИЕ:
дано три переменные вещественного типа. если их значения упорядочены по возрастанию или убыванию, то удвоить их; иначе заменить значение каждой переменной на противоположное. вывести значения переменных.


или как можно это решение (для консольного режима) сделать для визуального режима(чтобы сначала ввести с клавиатуры три вещественные переменные, а потом нажать на кнопку и сделать задание):
Код:
#include <iostream>
int main(){
    double a=-2.9,b=0,c=1.2;
    if (a < b && b < c){
        a*=2;
        b*=2;
        c*=2;
    }
    else{
        a=-a;
        b=-b;
        c=-c;
    }
    std::cout << a << ' ' << b << ' ' << c << std::endl;
    return 0;
}
заранее огромное спасибо.
программирование вне форума Ответить с цитированием
Старый 17.01.2014, 08:42   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ну, как-то так:
Код:
double a, b, c;
cout << "Enter a: ";
cin >> a;
cout << "Enter b: ";
cin >> b;
cout << "Enter c: ";
cin >> c;

if ( (a < b && b < c) || (a > b && b > c) ) {
        a*=2;
        b*=2;
        c*=2;
    }
.....
Serge_Bliznykov вне форума Ответить с цитированием
Старый 18.01.2014, 11:32   #3
vvmcpp
Форумчанин
 
Аватар для vvmcpp
 
Регистрация: 11.12.2010
Сообщений: 116
По умолчанию

"если их значения упорядочены по возрастанию или убыванию"
Тут скорее всего имеется в виду массив.
Иначе как понять слово "упорядочены".
В порядке инициализации? Тогда возникает дополнительный вопрос, как определить порядок инициализации после того как переменные созданы? Это на самом деле интересный вопрос. Можно ли как то "вспомнить" в программе, в каком порядке были созданы переменные? Такое конечно возможно , например запоминать время после каждого создания переменной. Есть ли другой способ? Программа сама "помнит" время создания переменных или объектов?
vvmcpp вне форума Ответить с цитированием
Старый 18.01.2014, 22:29   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от vvmcpp Посмотреть сообщение
Можно ли как то "вспомнить" в программе, в каком порядке были созданы переменные? Такое конечно возможно , например запоминать время после каждого создания переменной. Есть ли другой способ? Программа сама "помнит" время создания переменных или объектов?
я бы рекомендовал завязывать с психотропными препаратами!
Если это стёб - то не смешно.
А если Вы серьёзно - то Вы очень глубоко заблуждаетесь. Никогда и никто не рассматривает упорядоченность по времени создания переменных.
Ужас!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 18.01.2014, 23:40   #5
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,679
По умолчанию

Serge_Bliznykov согласен.... Странная мысль.... Лично я никогда не задавался целью выяснить время создания переменной.
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 19.01.2014, 08:15   #6
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
я бы рекомендовал завязывать с психотропными препаратами!
Если это стёб - то не смешно.
А если Вы серьёзно - то Вы очень глубоко заблуждаетесь. Никогда и никто не рассматривает упорядоченность по времени создания переменных.
Ужас!
Сергей, по времени делать это не нужно. В задаии явно сказано:
Цитата:
если их значения упорядочены по возрастанию или убыванию
Отсюда следует. Т.к. переменные мы ввводим в программу в порядке их следования, то первая переменная и будет первой введённой.
Используя массив, определить возрастание или убывание последоватеьности проще простого.

Вот решение Вашей задачки для любого количества переменных:


Код:
#include <iostream.h>
#include "stdlib.h"

using namespace std;

int main()
{
const int N = 3;
double a[N];//= {2.9,-1.2,-1.2};

for(int i=0; i<N; i++)
{
  cout<<"Enter "<<i<<" ";
  cin>>a[i];
}

int j=0;
if(a[0] > a[1] || a[0] < a[1])// Определим тип последовательности по первым переменным
{// Если последовательность возрастает или убывает заходим
    for(int i=1; i<N; i++)
    {
      if(a[i-1] > a[i]) j--;
      if(a[i-1] < a[i]) j++;
    }
}
  for(int i=0; i<N; i++)
    abs(j) == N-1 ? a[i] = a[i]*2 : a[i] = 0-a[i];

for(int i=0; i<N; i++) cout<< a[i]<<' ';
system("pause");
return 0;
}
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder

Последний раз редактировалось Smitt&Wesson; 19.01.2014 в 09:32.
Smitt&Wesson вне форума Ответить с цитированием
Старый 19.01.2014, 11:23   #7
vvmcpp
Форумчанин
 
Аватар для vvmcpp
 
Регистрация: 11.12.2010
Сообщений: 116
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Если это стёб - то не смешно.
А если Вы серьёзно - то Вы очень глубоко заблуждаетесь. Никогда и никто не рассматривает упорядоченность по времени создания переменных.
Ужас!
Это не стеб.
Порядок следования переменных, это разве не порядок их создания в программе во времени. Или по вашему они создаются одна за другой в блоке памяти? Память не распределяется непрерывно. Где по вашему упорядочены переменные? На листочке бумаги? Но программа не работает
в тетрадке, она работает в компьютере.

Можно, конечно выделить непрерывный участок памяти, но делать это нужно специально, в случае, когда вы действительно собираетесь выделить непрерывный участок памяти, например для структуры.

Вот вам пример выделения памяти для структуры Foo

Код:

/*Автор идеи: Eric Z (Jing), 27 Dec 2013
взято с 
http://www.codeproject.com/Articles/702065/C-Struct-Hack
Лицензия на код открытая
 */
const size_t SIZE = 100;

 // участок памяти больший чем структура
Foo *p = (Foo*) malloc(sizeof(Foo) + sizeof(int) * (SIZE - 1));

 
p->size = SIZE;
Сама структура может выглядеть примерно так:

Код:
struct Foo
{
  //..
  size_t size;
  int data[1];
};

В массиве действительно значения могут быть упорядочены в порядке возрастания или убывания элементов.Элементы у нас пронумерованы индексами. Но даже в этом случае мы тоже имеем дело со временем. Разве массив может существовать вне времени.
Время создания и удаления объектов в программировании бывает очень важно.

Последний раз редактировалось vvmcpp; 19.01.2014 в 11:34.
vvmcpp вне форума Ответить с цитированием
Старый 19.01.2014, 12:10   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Время создания и удаления объектов в программировании бывает очень важно.
Извините за резкость, но это БРЕД полнейший!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 19.01.2014, 12:14   #9
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от vvmcpp Посмотреть сообщение
Где по вашему упорядочены переменные?
Эх, если бы не ПРАВИЛА ФОРУМА, я бы Вам ответил!
Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Извините за резкость, но это БРЕД полнейший!
Сергей, - согласен. Похоже нас пытаются тролить.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder

Последний раз редактировалось Smitt&Wesson; 19.01.2014 в 12:20.
Smitt&Wesson вне форума Ответить с цитированием
Старый 19.01.2014, 13:22   #10
vvmcpp
Форумчанин
 
Аватар для vvmcpp
 
Регистрация: 11.12.2010
Сообщений: 116
По умолчанию

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


Код:
#include <cstdlib>
#include <iostream>

using namespace std;
 

 
 // возвращает 0 если последовательно идущие элементы равны
// иначе возвращает 1 
// тут есть недоработка 
//  можно например проверять элементы  сравнивая и
// ввести дополнительную флаг упорядочения по возрастанию
// и в случае смены этого флага в цикле вернуть 0

int ifSorted(double doubleArray[], int maxArrayIndex)
    {
        
        
       for(int i=0;i<maxArrayIndex;i++)
       {
       
       if(doubleArray[i]==doubleArray[i+1])
                                    {
                                          return 0;
                                    }
      
        return 1;
       }
       
       
   
    return 1;
    }

int main(int argc, char *argv[])
{
const int N = 3;
double a[N];//= {2.9,-1.2,-1.2};

//ввод
for(int i=0; i<N; i++)
{
  cout<<"Enter "<<i<<" ";
  cin>>a[i];
}

cout<<endl;

// вывод
for(int i=0; i<N; i++)
{
  cout<<"a[N] = "<<a[i]<<" ";
   
}
 cout<<endl;
 
if (1==ifSorted(a,N))
// то удваиваем
      for(int i=0;i<N;i++)
               a[i]*=2;
 //иначе смена знака            
else 
      for(int i=0;i<N;i++)
        a[i]=-a[i];
   
   
   //вывод результата
for(int i=0; i<N; i++)
{
  cout<<"a[N] = "<<a[i]<<" ";
   
}      


cout<<endl;
 

    system("PAUSE");
    return EXIT_SUCCESS;
}

Последний раз редактировалось vvmcpp; 19.01.2014 в 16:12.
vvmcpp вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В файле f элементы упорядочены по возрастанию.требуется слить эти файлы в один файл,также упорядоченный по возрастанию ayoka Паскаль, Turbo Pascal, PascalABC.NET 2 16.05.2012 21:51
1. Даны две переменные целого типа: A и B. Если их значения не равны.... Alexspirit Помощь студентам 3 24.01.2012 22:30
Описать функцию RadToDeg(R) вещественного типа, находящую величину угла в градусах, если дана его величина R в радианах investr Паскаль, Turbo Pascal, PascalABC.NET 1 02.12.2011 14:47
Delphi. 1, если элементы к-й строки матрицы упорядочены по убыванию rager06 Помощь студентам 0 17.05.2011 17:06
если элементы k-й строки матрицы упорядочены по убыванию, иначе 0 nesss Помощь студентам 1 01.11.2010 15:41