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

Перемена местами слагаемых - C++

Восстановить пароль Регистрация
 
Greedy
0 / 0 / 0
Регистрация: 20.11.2011
Сообщений: 4
22.11.2011, 16:09     Перемена местами слагаемых #1
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include <iostream>
using namespace std;
 
void main ()
 
{
        int a[25];
        int i,k=0,t,n,imax,imin,min=0,max=0;
    
        cin>>n;
        
    
    
        for (i=0;i<n;i++)
                        a[i]=rand()%(25-8+8+9+8+7)+1;
        
        for (i=0;i<n;i++)
        {cout<<a[i]<<"   ";}
    
        for (i=0;i<n;i++)
        {
                        min=a[0];
                        max=a[0];
        }
 
        for (i=0;i<n;i++)
        {
                if (a[i]>max)
                {max=a[i];
                imax=i;}
                if (a[i]<min)
                {min=a[i];
                imin=i;}
        }
        cout<<"max="<<max<<endl;
        cout<<"min="<<min<<endl;
 
    
        int g[25];
 
        for (i=imax;i<=imin;i++)
            
            g[i]=a[i];
    
 
        for (i=imax;i<=imin;i++)
            
 
            cout<<g[i]<<"   ";
 
 
 
        for (i=1;i<=imin/2;i+=2)
 
            t=g[i];
        g[i]=g[imin-1-i];
        g[imin-1-i]=t;
 
        for (i=imax;i<=imin;i++)
 
            cout<<g[i]<<"   ";
 
            
        
 
}

ни как не могу переставить местами элементы между минимумом и максимумом. В чем ошибка?

Добавлено через 19 секунд
Включая минимум и максимум.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.11.2011, 16:09     Перемена местами слагаемых
Посмотрите здесь:

Массивы, перемена мест столбца и строки C++
Подсчитать количество слагаемых C++
C++ С++ Вычислить сумму из N слагаемых
C++ перемена элементов
C++ Количество слагаемых
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Сыроежка
Заблокирован
22.11.2011, 16:18     Перемена местами слагаемых #2
Что вот тут вы делаете?!

C++
1
2
3
4
5
       for (i=0;i<n;i++)
        {
                        min=a[0];
                        max=a[0];
        }
Вы сначала разберитесь с тем, что вы делаете, а уж потом отвлекайте других своими вопросами!
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
22.11.2011, 16:20     Перемена местами слагаемых #3
Цитата Сообщение от Greedy Посмотреть сообщение
ни как не могу переставить местами элементы между минимумом и максимумом. В чем ошибка?
вам реверс нужен?
Greedy
0 / 0 / 0
Регистрация: 20.11.2011
Сообщений: 4
22.11.2011, 16:21  [ТС]     Перемена местами слагаемых #4
В тот моменте я задаю минимальный и максимальный элементы. То что они равны первому элементу.

Добавлено через 39 секунд
ну наверное реверс. вот условие, может я просто не так написал.
Дан массив размера N. Переставить в обратном порядке элементы массива, расположенные между его минимальным и максимальным эле-ментами, включая минимальный и максимальный элементы
Bers
Заблокирован
22.11.2011, 16:22     Перемена местами слагаемых #5
Цитата Сообщение от Greedy Посмотреть сообщение
В тот моменте я задаю минимальный и максимальный элементы. То что они равны первому элементу.
Зачем это делать в цикле?
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
22.11.2011, 16:23     Перемена местами слагаемых #6
C
1
2
3
4
5
6
7
8
9
10
11
12
13
void swap (int *a, int *b)
{
    int c=*a;
    *a=*b;
    *b=c;
}
 
 
void rev (int *arr, int left, int right)
{
    for (; left<right;left++,right--)
        swap (&arr[left],&arr[right]);
}
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
22.11.2011, 16:31     Перемена местами слагаемых #7
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
49
50
51
52
53
#include "stdafx.h"
#include <stdio.h>
 
void swap (int *a, int *b)
{
    int c=*a;
    *a=*b;
    *b=c;
}
 
 
void rev (int *arr, int left, int right)
{
    for (; left<right;left++,right--)
        swap (&arr[left],&arr[right]);
}
 
void print (int *arr, int N)
{
    printf ("\n");
    for (int i=0;i<N;i++)
        printf ("%5d",arr[i]);
}
 
int _tmain(int argc, _TCHAR* argv[])
 
 
{
    int arr[]={8,2,3,4,5,9,7};
    int imin=0;
    int imax=0;
    
    print (arr,7);
 
    for (int i=0; i<7; i++)
    {
        if (arr[i]<arr[imin])
            imin=i;
        if (arr[i]>arr[imax])
            imax=i;
    }
 
        
    rev (arr,imin,imax);
 
 
    print (arr,7);
 
        fflush (stdin);
        getchar ();
 
        return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.11.2011, 16:35     Перемена местами слагаемых
Еще ссылки по теме:

перемена строк массива местами. C++
Перемена мест максимального и минимального элемента C++
C++ C++ - S=1+3+5+7+ …, всего n слагаемых

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

Или воспользуйтесь поиском по форуму:
Bers
Заблокирован
22.11.2011, 16:35     Перемена местами слагаемых #8
Greedy, Код иллюстрирует две твои проблемы:

1. Ты не умеешь конструировать алгоритмы. То есть, сам порядок действий, направленный на выполнение задачи. Для того, что бы сконструировать алгоритм не нужно быть программистом и знать С/С++
Обычно это происходит только по двум причинам:
- человек не умеет логически размышлять.
- человек не понимает сути задачи. Трудно решить задачу, сути которой ты не понимаешь.

2. Незнание синтаксиса языка.

Здесь, в теле цикла выполнится только первая строчка-инструкция.
А не все три.

C++
1
2
3
4
for (i=1;i<=imin/2;i+=2)
t=g[i];
 g[i]=g[imin-1-i];
 g[imin-1-i]=t;
Yandex
Объявления
22.11.2011, 16:35     Перемена местами слагаемых
Ответ Создать тему
Опции темы

Текущее время: 17:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru