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

Массивы - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 5.00
Victoria_Orel
 Аватар для Victoria_Orel
1 / 1 / 1
Регистрация: 26.02.2012
Сообщений: 74
26.02.2012, 11:49     Массивы #1
Во всех последовательностях положительных чисел изменить порядок элементов на противоположный

Размерность массива: 100
Диапазон значений -100 - 100

Надеюсь по помощь. Спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.02.2012, 11:49     Массивы
Посмотрите здесь:

массивы C++
C++ С++ массивы
индексные массивы и адресные массивы C++
C++ Массивы
C++ Массивы
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Черный ворон
129 / 123 / 6
Регистрация: 31.01.2012
Сообщений: 435
26.02.2012, 11:57     Массивы #2
можно конкретнее условие?
если последовательность скажем:
1 2 3 -5 -8 -9 4 5 6 -7 -2 2 3
должно получится
3 2 1 -5 -8 -9 6 5 4 -7 -2 3 2
я правильно понял?
Victoria_Orel
 Аватар для Victoria_Orel
1 / 1 / 1
Регистрация: 26.02.2012
Сообщений: 74
26.02.2012, 12:00  [ТС]     Массивы #3
Черный ворон, верно Вы поняли
AzaKendler
 Аватар для AzaKendler
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
26.02.2012, 12:13     Массивы #4
сортировать можно?
Victoria_Orel
 Аватар для Victoria_Orel
1 / 1 / 1
Регистрация: 26.02.2012
Сообщений: 74
26.02.2012, 12:18  [ТС]     Массивы #5
AzaKendler, да
AzaKendler
 Аватар для AzaKendler
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
26.02.2012, 12:19     Массивы #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <algorithm>
#include <stdio.h>
 
int main()
{
     int mass3 [20];
     for(int i=0; i<20; ++i)
        {                
     (i%2)?mass3[i] = i:mass3[i] =-i; //заполняем тестовый массив + и - числами
         }
 
     for(int i=0; i<20; i++)
    {printf("%d ",mass3[i]);} //состояние до обработки
     printf("\n"); 
 
    std::nth_element(mass3,mass+10,mass3+20,[](int a,int b)->bool{return a<0&&a<b;});
        //помещаем все - числа до mass+10
    std::reverse(mass3+10,mass3+20);//обращаем порядок положительных чисел с mass+10
 
    for(int i=0; i<20; i++)
    {printf("%d ",mass3[i]);} //вывод после обработки
 
}
Victoria_Orel
 Аватар для Victoria_Orel
1 / 1 / 1
Регистрация: 26.02.2012
Сообщений: 74
26.02.2012, 12:24  [ТС]     Массивы #7
AzaKendler, спасибо
но вот тут ошибка получается

C++
1
std::nth_element(mass3,mass+10,mass3+20,[](int a,int b)->bool{return a<0&&a<b;});
Компилирую через Dev C++
AzaKendler
 Аватар для AzaKendler
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
26.02.2012, 12:25     Массивы #8
вижу ошибку. исправил mass вместо mass3 было

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <algorithm>
#include <stdio.h>
 
int main()
{
         int mass3 [20];
         for(int i=0; i<20; ++i)
        {                                
         (i%2)?mass3[i] = i:mass3[i] =-i; //заполняем тестовый массив + и - числами
         }
 
         for(int i=0; i<20; i++)
        {printf("%d ",mass3[i]);} //состояние до обработки
         printf("\n"); 
 
        std::nth_element(mass3,mass3+10,mass3+20,[](int a,int b)->bool{return a<0&&a<b;});
        //помещаем все - числа до mass+10
        std::reverse(mass3+10,mass3+20);//обращаем порядок положительных чисел с mass+10
 
        for(int i=0; i<20; i++)
        {printf("%d ",mass3[i]);} //вывод после обработки
 
}
Victoria_Orel
 Аватар для Victoria_Orel
1 / 1 / 1
Регистрация: 26.02.2012
Сообщений: 74
26.02.2012, 12:29  [ТС]     Массивы #9
AzaKendler, я просто в этом деле совсем новенькая..
AzaKendler
 Аватар для AzaKendler
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
26.02.2012, 12:30     Массивы #10
Victoria_Orel, исправил. была ошибка. опечатался в переменной
Victoria_Orel
 Аватар для Victoria_Orel
1 / 1 / 1
Регистрация: 26.02.2012
Сообщений: 74
26.02.2012, 12:34  [ТС]     Массивы #11
AzaKendler, ага проверку вижу
на сайте работает
а через тот компилятор нам дали не работает
Миниатюры
Массивы  
AzaKendler
 Аватар для AzaKendler
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
26.02.2012, 12:36     Массивы #12
Victoria_Orel, на твоем скрине и видна ошибка mass а должно быть mass3. проверь я поправил уже. скопируй последний текст
это от того что у меня в мэйне несколько массивов было, ну и решил тебе еще помочь с заданием и опечатался, бывает
Victoria_Orel
 Аватар для Victoria_Orel
1 / 1 / 1
Регистрация: 26.02.2012
Сообщений: 74
26.02.2012, 12:37  [ТС]     Массивы #13
AzaKendler,большое спасибо!) Всё работает!)
Avazart
 Аватар для Avazart
6904 / 5144 / 253
Регистрация: 10.12.2010
Сообщений: 22,628
Записей в блоге: 17
26.02.2012, 12:56     Массивы #14
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
#include <vector>
#include <algorithm>
#include <iterator>
 
struct gener
 {
 int operator()(){return rand()%100-50;}
 }gen;
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
std::vector<int> m(100);
std::vector<int>::iterator it,first,last;
bool start=false;
 
std::generate(m.begin(),m.end(),gen);
 
for(unsigned i=0;i<m.size();i++) Memo1->Lines->Add(m[i]);  //Вывод до перетановки
 
first=m.begin();
for(it=m.begin();it!=m.end();++it)
 {
 if(*it>=0 && !start) { first=it;start = true;}
 if(*it<0  &&  start) { last=it;std::reverse(first,last);start=false;};
 }
 
for(unsigned i=0;i<m.size();i++) Memo2->Lines->Add(m[i]);//Вывод после перетановки
}
Victoria_Orel
 Аватар для Victoria_Orel
1 / 1 / 1
Регистрация: 26.02.2012
Сообщений: 74
26.02.2012, 13:02  [ТС]     Массивы #15
а что будет проще всего?
ну в смысле чтоб мне поверили что я сама сделала?)
а то у нас было всего пару лекций
Миниатюры
Массивы  
Avazart
 Аватар для Avazart
6904 / 5144 / 253
Регистрация: 10.12.2010
Сообщений: 22,628
Записей в блоге: 17
26.02.2012, 13:08     Массивы #16
а что будет проще всего?
ну в смысле чтоб мне поверили что я сама сделала?)
а то у нас было всего пару лекций
А stl учили?Можно ее применять?
Victoria_Orel
 Аватар для Victoria_Orel
1 / 1 / 1
Регистрация: 26.02.2012
Сообщений: 74
26.02.2012, 13:10  [ТС]     Массивы #17
Avazart, нет не учили

последнее что мы разбирали это "Пользовательские функции"
Avazart
 Аватар для Avazart
6904 / 5144 / 253
Регистрация: 10.12.2010
Сообщений: 22,628
Записей в блоге: 17
26.02.2012, 13:12     Массивы #18
У эт залет...
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
struct gener
 {
 int operator()(){return rand()%100-50;}
 }gen;
//---------------------------------------------------------
 
int _tmain(int argc, _TCHAR* argv[])
{
std::vector<int> m(100);
std::vector<int>::iterator it,first,last;
bool start=false;
 
std::generate(m.begin(),m.end(),gen);
 
for(unsigned i=0;i<m.size();i++) std::cout<<m[i]<<" ";  //Вывод до перетановки
std::cout<<std::endl;
 
first=m.begin();
for(it=m.begin();it!=m.end();++it)
 {
 if(*it>=0 && !start) { first=it;start = true;}
 if(*it<0  &&  start) { last=it;std::reverse(first,last);start=false;};
 }
 
for(unsigned i=0;i<m.size();i++) std::cout<<m[i]<<" ";  //Вывод до перетановки
std::cout<<std::endl;
char ch;
std::cin.get(ch);
}
Victoria_Orel
 Аватар для Victoria_Orel
1 / 1 / 1
Регистрация: 26.02.2012
Сообщений: 74
26.02.2012, 13:15  [ТС]     Массивы #19
Avazart, ошибок полно почему-то(
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.02.2012, 14:33     Массивы
Еще ссылки по теме:

C++ массивы
C++ Массивы

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

Или воспользуйтесь поиском по форуму:
Avazart
 Аватар для Avazart
6904 / 5144 / 253
Регистрация: 10.12.2010
Сообщений: 22,628
Записей в блоге: 17
26.02.2012, 14:33     Массивы #20
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
#include <stdio.h>
//----------------------Меняет местами а и b -----------------------------------
void swap(int &a,int &b)
{
 int tmp=b;
 b=a;
 a=tmp;
}
//----------Меняет  порядок в масиве m  начиная с first заканчивая last---------
void reverse(int m[],int first,int last)
{
 for( ;first<last;first++,last--) swap(m[first],m[last]);
}
//-------------Вывод массива---------------------------
void show(int size,int m[])
{
for(int i=0;i<100;i++) { printf("%d ",m[i]); }
printf("\n");
}
//---------------------------------------------------------
int _tmain(int argc, _TCHAR* argv[])
{
int m[100];
int first,last;
bool start=false;
 
for(int i=0;i<100;i++) m[i]= rand()%100-50;// заполнение массива псевдослучайными числами
 
show(100,m);  //Вывод до перетановки
 
for(int j=0;j<100;j++)
 {
 if(m[j]>=0 && !start) { first=j;start = true;}
 if(m[j]<0  &&  start)
    { 
      last =j-1;
      reverse(m,first,last);
      start=false;
    };
 }
 
show(100,m);   //Вывод после перетановки
 
getchar();
}
//---------------------------------------------------------------------------
Ф-ции rand(),getchar() возможно придется заменить из-за особеностей среды разработки
Yandex
Объявления
26.02.2012, 14:33     Массивы
Ответ Создать тему
Опции темы

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