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

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

Войти
Регистрация
Восстановить пароль
 
Sollers
0 / 0 / 0
Регистрация: 16.06.2009
Сообщений: 37
#1

Сравнить первый и второй элементы массива - C++

01.07.2009, 17:38. Просмотров 939. Ответов 7
Метки нет (Все метки)

Здравствуйте. У меня возникли проблемы решением задачки. Подскажите формулу.
"Дан 2 -ух мерный массив. Сравнить первый и второй элементы массива. Если второй элемент меньше первого, то поменяйте их местами. Затем то же сделать со вторым и третьим, ..., предпоследним и последним элементами.
Я вот тут начал и застрял:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
main()
{
int t, i, num[n] [m];
printf("vvedite kolichestvo ctrok massiva");
scanf("%d", n);
printf("\n");
printf("vvedite kolichestvo stolbcov");
skanf("%d", m);
for (t = 0; t<n; t++)
for (i = 0; i<m; i++)
d[n][m] =
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.07.2009, 17:38     Сравнить первый и второй элементы массива
Посмотрите здесь:
C++ Поменять элементы массива следующим образом: первый с последним, второй с предпоследним и т.д.
C++ Из массива положительные элементы перетащить в первый массив, а все отрицательные во второй.
Сформировать два массива: в первый включить элементы с четными номерами, а во второй — с нечетными C++
C++ Сформировать два массива из исходного: в первый записать отрицательные элементы, во второй – остальные
Сформировать массивы: в первый включить элементы исходного массива с четными номерами, а во второй с нечетными C++
Преобразить массив так, чтобы элементы массива поменялись местами: первый - последним, второй - предпоследним, и т.д. C++
Дан массив B[0:n-1].Сформировать два новых массива:первый содержит отрицательные элементы , а второй - чётные C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Rififi
2359 / 1054 / 44
Регистрация: 03.05.2009
Сообщений: 2,656
01.07.2009, 18:18     Сравнить первый и второй элементы массива #2
C++
1
2
3
int arr[...] = {...};
for (int i=1; i<sizeof(arr) / sizeof(arr[0]); i++)
    arr[i-1] < arr[i] ? tmp=arr[i-1], arr[i-1]=arr[i], arr[i]=tmp : (void) 0;
Sollers
0 / 0 / 0
Регистрация: 16.06.2009
Сообщений: 37
01.07.2009, 18:28  [ТС]     Сравнить первый и второй элементы массива #3
То, что вы мне выдали, я в этом не могу разобраться. А как поменять элементы массива местами. Можно примерчик в упрощенном в виде.
FireOwl
62 / 44 / 5
Регистрация: 01.07.2009
Сообщений: 145
01.07.2009, 20:43     Сравнить первый и второй элементы массива #4
Я всегда делал так:
второй элемент массива сохранял в некоторую переменную (например x), затем приравнивал второй элемент массива к первому, а первый к переменной x.

Пример для одномерного массива:
C++
1
2
3
4
5
int m[n];
 
for(c=1; c<n; c++){
 if (m[c]<m[c-1]){ x=m[c]; m[c]=m[c-1]; m[c-1]=x; }
}
Для двух мерного массива этот алгоритм надо довести немного до ума.
firefox1913
27 / 27 / 2
Регистрация: 01.07.2009
Сообщений: 58
01.07.2009, 21:39     Сравнить первый и второй элементы массива #5
Вот так попробуи
C++
1
2
3
4
5
6
7
8
9
10
for(int i=1; i<N; i++)
{
 for(int j=1; j<N; j++)
  if(mas[i][j]< mas[i][j-1])
  {
   temp=mas[i][j+1];
   mas[i][j+1]=mas[i][j];
   mas[i][j]=temp;
  {
{
Невик
3 / 3 / 1
Регистрация: 23.01.2009
Сообщений: 18
01.07.2009, 21:40     Сравнить первый и второй элементы массива #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
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
#include <iostream>
#include <iomanip>
 using namespace std;
 
int main()
{
setlocale(LC_CTYPE,"Russian");
const int n=4;
const int m=3;
int  num[n][m]={
    {12,5,8},
    {5,4,2},
    {56,89,14},
    {32,54,3}
};
cout<<"Начальная матрица"<<endl;
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++) 
{
cout<<setw(5)<<num[i][j];
if(j/(m-1)==1) cout<<endl;
}
}
int arr[n*m];
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++) arr[j+i*(n-1)]=num[i][j];
}
for(int i=0;i<n*m-1;i++)
{
 
if(arr[i]>arr[i+1]) 
{
    int nm=arr[i];
    arr[i]=arr[i+1];
    arr[i+1]=nm;    
}
}
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++) num[i][j]=arr[j+(n-1)*i];
}
cout<<"Конечная матрица"<<endl;
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++) 
{
cout<<setw(5)<<num[i][j];
if(j/(m-1)==1) cout<<endl;
}
}
system("PAUSE");
return 0;
}
Sollers
0 / 0 / 0
Регистрация: 16.06.2009
Сообщений: 37
02.07.2009, 16:56  [ТС]     Сравнить первый и второй элементы массива #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
#include <stdio.h>
#include <conio.h>
#define ROW 10
#define COL 10
 
void main()
{
int x;
int i, j;
int a[ROW][COL];
printf("\n vvedite massiv \n");
printf("posle vvoda el kazdoi stroki,");
printf("\n%i celix chisel, nazimaite <Enter>\n", COL);
for (i = 0; i < ROW; i++)
{
printf("->");
for (j = 0; j < COL; j++)
/*skanf("%i", &a[i][j]);)*/
if (a[i][j] < a[i][j-1])
{ x = a[i][j+1];
a[i][j+1] = a[i][j];
a[i][j] = x;
}
getch();
}
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.07.2009, 17:54     Сравнить первый и второй элементы массива
Еще ссылки по теме:
C++ Поменять элементы массива местами:первый должен стать вторым, второй третьим и т.д. а последний первым
C++ Записать элементы массива в обратном порядке: первый элемент должен оказаться на последнем месте, второй - на предпоследнем
C++ Дан массив F[0:n-1].Сформировать два новых массива: первый содержит элементы, не превышающие заданного числа, а второй - все остальные
C++ Переставить местами первый минимальный и первый максимальный элементы массива из n вещественных чисел
C++ Создать динамический список, поменять местами последний и первый элементы списка, предпоследний и второй и т.д.

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

Или воспользуйтесь поиском по форуму:
Alik-Soldier
9 / 9 / 0
Регистрация: 01.05.2009
Сообщений: 127
02.07.2009, 17:54     Сравнить первый и второй элементы массива #8
Цитата Сообщение от Sollers Посмотреть сообщение
C++
1
2
3
4
if (a[i][j] < a[i][j-1])
{ x = a[i][j+1];
a[i][j+1] = a[i][j];
a[i][j] = x;
Ты проверяеш и меняешь местами разные элементы. Надо так:
C++
1
2
3
4
if (a[i][j] < a[i][j-1])
{ x = a[i][j-1];
a[i][j-1] = a[i][j];
a[i][j] = x;
Yandex
Объявления
02.07.2009, 17:54     Сравнить первый и второй элементы массива
Ответ Создать тему
Опции темы

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