Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.75
Venom33
19 / 19 / 0
Регистрация: 26.01.2013
Сообщений: 288
#1

Введенные значения переменных a, b, c поменять местами так, чтобы оказалось a>=b>=c - C++

13.02.2013, 22:46. Просмотров 2298. Ответов 20
Метки нет (Все метки)

Здравствуйте.
Помогите, пожалуйста, в написании алгоритма на C++.
>> Введенные значения переменных a, b, c поменять местами так,
чтобы оказалось a>=b>=c.
Спасибо заранее добрым людям! +(с меня плюсики к вашей репутации)
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.02.2013, 22:46
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Введенные значения переменных a, b, c поменять местами так, чтобы оказалось a>=b>=c (C++):

Значения переменных а, Ь и с поменять местами так, чтобы оказалось а >= Ь >= с. - C++
Значения переменных а, Ь и с поменять местами так, чтобы оказалось а >= Ь >= с. помогите пожалуйста

Значения переменных поменять местами так, чтобы они оказались упорядоченными по возрастанию - C++
1) Найти длину окружности и площадь круга заданного радиуса R. Для значения пи использовать 3.14. 2) Дано три действительных числа X, Y,...

Перераспределить значения данных переменных так, чтобы в A оказалось меньшее из значений, а в B-большее - C++
Даны две переменные вещественного типа: A, B. Перераспределить значения данных переменных так, чтобы в A оказалось меньшее из значений,...

Значения переменных X, Y, Z поменять местами так - C++
Значения переменных X, Y, Z поменять местами так, чтобы они оказались упорядоченными по убыванию. Подскажите пожалуйста просто я только...

Значение переменных поменять местами так, чтобы они оказались упорядоченными по возрастанию - C++
Спасибо огромное Инфинити!!! за прошлый ответ . Робот может перемещаться в четырех направлениях("С"-север, "З"-запад, "Ю"-юг,...

Значение переменных поменять местами так, чтобы они оказались упорядоченными по возрастанию - C++
Здравствуйте дорогие форумчане! помогите пожалуйта с решением задачки на С++ . Значение переменных X, Y, Z, поменять местами так, что бы...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Kins
59 / 58 / 6
Регистрация: 03.02.2013
Сообщений: 167
13.02.2013, 23:15 #2
примитивно, пока как умею)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    int a, b, c;
    cin >>a >>b >>c;
    if ((a>=b)&&(b>=c))
        cout <<a <<b <<c;
    else if ((b>=a)&&(a>=c))
        cout <<b <<a <<c;
    else if ((a>=c)&&(c>=b))
        cout <<a <<c <<b;
    else if ((b>c)&&(c>a))
        cout <<b <<c <<a;
    else if ((c>=a)&&(a>=b))
        cout <<c <<a <<b;
    else cout <<c <<b <<a;
    system ("pause >>void");
1
Ev[G]eN
Эксперт С++
5097 / 1535 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
13.02.2013, 23:22 #3
Kins, тут нужно менять не переменные местами, а их значения. скорее всего
1
Kins
59 / 58 / 6
Регистрация: 03.02.2013
Сообщений: 167
13.02.2013, 23:31 #4
Цитата Сообщение от Ev[G]eN Посмотреть сообщение
Kins, тут нужно менять не переменные местами, а их значения. скорее всего
вроде все правильно сделал, хотя может и запарил чутка, но, сомневаюсь конечно -просто голова уже не варит))
1
veverix
39 / 39 / 2
Регистрация: 14.09.2012
Сообщений: 85
13.02.2013, 23:31 #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <cmath>
#include <iostream>
using namespace std;
 
void main()
{
    int a = 3, b = 3, c = 5;
           int tempa = a, tempb = b, tempc = c;
           a = max(max(tempa, tempb), tempc);
    b = max(tempb, tempc);
    c = min(tempb, tempc);
    cout<<a<<' '<<b<<' '<<c<<endl;
    system("pause");
}
- способ не очень, но если не знаешь алгоритмов - самое то

C++
1
2
3
4
5
6
7
8
9
#include <alghoritm>
void main()
{
    int a = 3, b = 3, c = 5;
    int* n[3] = {&a, &b, &c};
    sort(n, n+2);
    cout<<a<<' '<<b<<' '<<c<<endl;
    system("pause");
}
- а вот это способ с алгоритмом
1
Kins
59 / 58 / 6
Регистрация: 03.02.2013
Сообщений: 167
13.02.2013, 23:35 #6
я помоему самый элементарный способ выложил)

з.ы. Вы еще алгоритм нахождения базы нацистов на темной стороне луны тут опубликуйте)
1
Venom33
19 / 19 / 0
Регистрация: 26.01.2013
Сообщений: 288
13.02.2013, 23:49  [ТС] #7
Спасибо, ребята!
А есть что-то попроще? на уровне stdio.h, math.h и conio.h? Боюсь, не пойдёт.
Если не сложно, с небольшими комментариями (например, не знаю, что делают tempb, tempc, cout<<a<<' '<<b<<' '<<c<<endl;
0
anoise
2 / 2 / 0
Регистрация: 11.02.2013
Сообщений: 8
14.02.2013, 00:29 #8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <iostream>
 
using namespace std;
 
void quickSortR(int* a, long N) //сортирует массив состоящий из a b c
 
{
 
 
  long i = 0, j = N;  
  int temp, p;
 
  p = a[ N>>1 ];       
 
  
  do {
    while ( a[i] < p ) i++;
    while ( a[j] > p ) j--;
 
    if (i <= j) {
      temp = a[i]; a[i] = a[j]; a[j] = temp;
      i++; j--;
    }
  } while ( i<=j );
  
  if ( j > 0 ) quickSortR(a, j);
  if ( N > i ) quickSortR(a+i, N-i);
}
 
int main()
{   
 
int a,b,c,arr[3] = {0,0,0};
 
    cout<<"Введите через пробел a b c и нажмите Enter";
 
    cin>>arr[0]>>arr[1]>>arr[2];//Получаем введенные значения
 
    quickSortR(arr,2);//Сортируем по убыванию
    
    a=arr[2];
    b=arr[1];
    c=arr[0];
    
    cout<<"a="<<a<<"b="<<b<<"c="<<c;//Выводим результат
 
    return 0;
}
Рекомендуется к прочтению прикрепленная тема Алгоритмы сортировки
1
Kins
59 / 58 / 6
Регистрация: 03.02.2013
Сообщений: 167
14.02.2013, 00:29 #9
cout<<a<<' '<<b<<' '<<c<<endl; - производит вывод переменной а, затем следует пробел (' '), потом переменная b, опять пробел, перменная с и все- конец строки
int tempa = a, tempb = b, tempc = c; - присвоение переменным tempа, tempb, tempс, значений а, b, с
1
Venom33
19 / 19 / 0
Регистрация: 26.01.2013
Сообщений: 288
14.02.2013, 00:57  [ТС] #10
а что такое "ARR" и как мне доступным языком объяснить, что она там делает? и "temp" непонятно для чего в разных случаях.
знаю,что не силён в С++, но для вас это лёгкий уровень же
0
veverix
39 / 39 / 2
Регистрация: 14.09.2012
Сообщений: 85
14.02.2013, 05:14 #11
cout - вывод через поток, аналог с stdio -

printf("%i %i %i", a, b, c);

temp-ы ввел, потому что если просто менять значения, в итоге они перезапишутся и останется одно число
1
MrGrig
176 / 159 / 2
Регистрация: 08.10.2012
Сообщений: 422
14.02.2013, 06:54 #12
Цитата Сообщение от veverix Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <cmath>
#include <iostream>
using namespace std;
void main()
{
    int a = 3, b = 3, c = 5;
    int tempa = a, tempb = b, tempc = c;
    a = max(max(tempa, tempb), tempc);
    b = max(tempb, tempc);
    c = min(tempb, tempc);
    cout<<a<<' '<<b<<' '<<c<<endl;
    system("pause");
}
считать не будет правильно, если с будет максимальным.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void func(int &a, int &b){//Пользовательскя функция, делает перестановку 2х элементов, с помощью "3х стаканов"
    int c=b;
    b=a;
    a=c;
}
 
void main(){
    int mas[3];
    scanf("%d",&mas[0]);//Вводим а б и ц
    scanf("%d",&mas[1]);
    scanf("%d",&mas[2]);
    if(mas[2]>=mas[1])//сравниваем последний и предпоследний если нада меняем
        func(mas[2],mas[1]);
    if(mas[1]>mas[0]){//сравниваем первый и второй если нада меняем
        func(mas[1],mas[0]);
        if(mas[2]>=mas[1])//если условие выполнилось, необходимо еще раз проверить 2й и 3й элементы
            func(mas[2],mas[1]);
    }
    printf("%d %d %d",mas[0],mas[1],mas[2]);
    system("pause");
}
только совет переписать код в ручную а не копипастить, ибо у меня почемуто вылезло туева хуча ошибок и компилятор жаловался на пробелы и переход на новую строку, пытаясь мне предложить поставаить точку с запятой перед сканфом оО + советаю выводить пояснения что когда вводишь.
2
Venom33
19 / 19 / 0
Регистрация: 26.01.2013
Сообщений: 288
14.02.2013, 09:17  [ТС] #13
Благодарю,ребята! Сколько смог вам, столько и проставил "спасибо" дальше выключилась эта кнопка
0
veverix
39 / 39 / 2
Регистрация: 14.09.2012
Сообщений: 85
14.02.2013, 19:48 #14
Цитата Сообщение от MrGrig Посмотреть сообщение
считать не будет правильно, если с будет максимальным.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void func(int &a, int &b){//Пользовательскя функция, делает перестановку 2х элементов, с помощью "3х стаканов"
    int c=b;
    b=a;
    a=c;
}
 
void main(){
    int mas[3];
    scanf("%d",&mas[0]);//Вводим а б и ц
    scanf("%d",&mas[1]);
    scanf("%d",&mas[2]);
    if(mas[2]>=mas[1])//сравниваем последний и предпоследний если нада меняем
        func(mas[2],mas[1]);
    if(mas[1]>mas[0]){//сравниваем первый и второй если нада меняем
        func(mas[1],mas[0]);
        if(mas[2]>=mas[1])//если условие выполнилось, необходимо еще раз проверить 2й и 3й элементы
            func(mas[2],mas[1]);
    }
    printf("%d %d %d",mas[0],mas[1],mas[2]);
    system("pause");
}
только совет переписать код в ручную а не копипастить, ибо у меня почемуто вылезло туева хуча ошибок и компилятор жаловался на пробелы и переход на новую строку, пытаясь мне предложить поставаить точку с запятой перед сканфом оО + советаю выводить пояснения что когда вводишь.
Действительно, вот правильный способ:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <cmath>
#include <iostream>
using namespace std;
 
void main()
{
    int a = 2, b = 5, c = 3;
           int tempa = a, tempb = b, tempc = c;
           a = max(max(tempa, tempb), tempc);
    b = min(max(max(tempa, tempb), max(tempb, tempc)), max(tempa, tempc));
    c = min(tempa, min(tempb, tempc));
    cout<<a<<' '<<b<<' '<<c<<endl;
    system("pause");
}
}
1
Venom33
19 / 19 / 0
Регистрация: 26.01.2013
Сообщений: 288
14.02.2013, 20:20  [ТС] #15
а почему "void func(int &a, int &b)" написан в отдельном цикле от массивов? объясните, пожалуйста. &a,&b- это типа ввод адреса для переменных a и b?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.02.2013, 20:20
Привет! Вот еще темы с ответами:

Условный оператор: поменять значения переменных так, чтобы выполнилось условие - C++
Даны вещественные x1, x2, x3, x4 . Поменять значения переменных так, чтобы \chi 1 \geq \chi 2; \chi 3 \geq \chi 4.

Поменять местами введенные значения - C++
Помогите, пожалуйста, простенько решить задачку. Даны четыре числа А, В, С и D. Поменять их значения местами таким образом, что-бы A &gt; B...

Поменять местами значения целых переменных х и у не используя дополнительных переменных - C++
Знаю, что это очень простая задача, но никак не могу сделать, пожалуйста помогите!!! Поменять местами значения целых переменных х и у не...

Поменять местами значения вещественных переменных - C++
Поменяйте местами значения вещественных переменных x и y


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
14.02.2013, 20:20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru