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

Сортировка отрицательных чисел нечетных строк - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.87
Stuzzy
0 / 0 / 0
Регистрация: 08.01.2010
Сообщений: 13
08.01.2010, 16:31     Сортировка отрицательных чисел нечетных строк #1
Я никак не могу понять, как провести сортировку по возрастанию отрицательных чисел в нечетных строках матрицы методом пузырька.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.01.2010, 16:31     Сортировка отрицательных чисел нечетных строк
Посмотрите здесь:

C++ Для чисел от -50 до 50 найти кол-во четных отрицательных и кол-во положительных нечетных чисел
элементы матрицы Q,стоящие на пересечении нечетных строк и нечетных столбцов заменить переменной P C++
C++ Дано двумерный массив целых чисел. Найти номер строки, в которой сумма отрицательных нечетных элементов наибольшая
найти разность между произведением нечетных чисел и наибольшим среди отрицательных C++
C++ Найти разность между произведением нечетных чисел и наибольшим среди отрицательных
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tani
25 / 25 / 1
Регистрация: 27.12.2009
Сообщений: 82
08.01.2010, 22:13     Сортировка отрицательных чисел нечетных строк #21
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
for (i=0;i<razmer;i+=2)
   for(j=0;j<razmer;j++)
{
{
  if (a[i][j]<0)
  {  // здесь еще скобки нужны были
{          
d[k]=a[i][j];
  k++;
}
}
for(b=0;b<k-1;b++)
{
for (p=0; p<k; p++)
if (d[p]>d[p+1])
{
x=d[p];
d[p]=d[p+1];
d[p+1]=x;
}
}
p=0;
for(j=0;j<razmer;j++)
 if (a[i][j]<0)
{a[i][j]=d[p]
p++;
}
}
} // и в конце
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Stuzzy
0 / 0 / 0
Регистрация: 08.01.2010
Сообщений: 13
08.01.2010, 22:20  [ТС]     Сортировка отрицательных чисел нечетных строк #22
а если всё сделать проще,правда я ещё не додумал
но чонить типа:

C
1
2
3
4
5
6
7
8
9
for (k=0; k<razmer-1; k++)
    {
        for (i=0; i<razmer-1-k; i=i+2)
        {
            for (j=0; j<razmer-1-k; j++)
            {
                
                if (a[0][0]>a[i][j] && a[0][0]<0 && a[i][j]<0)
                {
дальше я не додумал ещё)

Добавлено через 4 минуты
точнее что-нибудь типо:
C
1
2
3
4
5
6
7
8
9
10
11
12
for (k=0; k<razmer-1; k++)
    {
        for (i=0; i<razmer-1-k; i=i+2)
        {
            for (j=0; j<razmer-1; j++)
            {
                
                if (a[0][0]>a[i][j] && a[0][0]<0 && a[i][j]<0)
                {
                    tmp=a[i][j];
                    a[i][j]=a[i][j+1];
                    a[i][j+1]=tmp;
вот так проще и "пытается сортировать" в четных строках.правда чёто неправильно
Tani
25 / 25 / 1
Регистрация: 27.12.2009
Сообщений: 82
08.01.2010, 22:21     Сортировка отрицательных чисел нечетных строк #23
Stuzzy
0 / 0 / 0
Регистрация: 08.01.2010
Сообщений: 13
08.01.2010, 22:57  [ТС]     Сортировка отрицательных чисел нечетных строк #24
почему нет? щас ещё подумаю и мб получится.

Добавлено через 33 минуты
в общем,спасибо за помощь)
завтра ещё попытаюсь чонить придумать.
Tani
25 / 25 / 1
Регистрация: 27.12.2009
Сообщений: 82
09.01.2010, 00:10     Сортировка отрицательных чисел нечетных строк #25
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
#include <iostream>
using namespace std;
int main(void)
{
    double a[20][20],x=0,d[20];
    int i,j,razmer,k=0,p=0,b;;
 
     printf("vvedite razmer matrici (maximum 20):\n");
       cin>>razmer;
    for (i=0; i<razmer; i++)
    {
        for (j=0; j<razmer; j++)
        
          cin>> a[i][j];
    }
   for(i=0; i<razmer; i++)
   {
       for (j=0; j<razmer; j++)
       
          cout<< a[i][j]<<"  ";
       
       printf("\n");
    }
for (i=0;i<razmer;i+=2)
{
    for(j=0;j<razmer;j++)
{
  if (a[i][j]<0)
      {            
d[k]=a[i][j];
  k++; 
}
    }
for(b=0;b<k-1;b++)
{
for (p=0; p<k-1; p++)
if (d[p]>d[p+1])
{
x=d[p];
d[p]=d[p+1];
d[p+1]=x;
}
}
p=0;
k=0;
for(j=0;j<razmer;j++)
 if (a[i][j]<0)
{a[i][j]=d[p];
p++;
}
}
   
    printf ("\n Rezultat: \n");
    for(i=0; i<razmer; i++)
    {
        for (j=0; j<razmer; j++)
        
            printf("%10.2lf", a[i][j]);
 
        
        printf("\n");
    }
   return 0;
}
Полностью рабочий код, ошибки были смешные, но я их так не люблю искать. Надо учиться
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
09.01.2010, 05:28     Сортировка отрицательных чисел нечетных строк #26
Код Tani проверил, полностью рабочий. Но есть одно но:
Цитата Сообщение от Stuzzy Посмотреть сообщение
Я никак не могу понять, как провести сортировку по возрастанию отрицательных чисел в нечетных строках матрицы методом пузырька
Если все-таки в нечетных (нумерация строк начинается с нуля), то строку 24 заменить на :
C++
1
for (i=1;i<razmer;i+=2)
Tani
25 / 25 / 1
Регистрация: 27.12.2009
Сообщений: 82
09.01.2010, 06:32     Сортировка отрицательных чисел нечетных строк #27
Спасибо, но я воспринимаю задание, что нечетные строки все-таки для пользователя Хотя
Stuzzy мне писал про четные строки в своей программе, когда применял мою выборку. Ну значит пусть исправляет
Stuzzy
0 / 0 / 0
Регистрация: 08.01.2010
Сообщений: 13
09.01.2010, 16:11  [ТС]     Сортировка отрицательных чисел нечетных строк #28
Первая строка для нас является ЧЕТНОЙ,тк её номер 0.
В общем,я всё сделал намного проще,чем написали вы
сама сортировка выглядит вот так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    for (k=0; k<razmer-1; k++)
    {
        for (j=0; j<razmer; j++)
        {
             for (i=0; i<razmer; i=i+2)
             {
                if (a[i][j]>a[i][j+1] && a[i][j+1]<0)
                {
                    tmp=a[i][j];
                    a[i][j]=a[i][j+1];
                    a[i][j+1]=tmp;
                }
            }
        }
    }
Вся программа вот так:
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
67
68
69
70
71
72
73
74
75
#include <stdio.h>
#include <conio.h>
void main()
{
    FILE *fw,*fr;
    double a[20][20],tmp;
    int i,j,razmer,k;
    fw=fopen("log.txt","w");
    //zadaetsya razmer
    do
    {
        printf("vvedite razmer matrici (maximum 20):\n");
        scanf("%d",&razmer);
    }
    while (razmer>20 || razmer<1);
    printf("\n");
    fr=fopen("matrix 5na5.txt","r");
    //vvod matrici iz file'a
    for (i=0; i<razmer; i++)
    {
        for (j=0; j<razmer; j++)
        {
            fscanf (fr, "%lf", &a[i][j]);
        }
    }
    fclose(fr);
    //vyvod matrici v file 
    printf ("\n Matrix: \n");
    fprintf (fw,"Matrix: \n");
    for(i=0; i<razmer; i++)
    {
        for (j=0; j<razmer; j++)
        {
            printf("%10.0lf", a[i][j]);
            fprintf(fw, "%10.0lf" , a[i][j]);
        }
        printf("\n");
        fprintf(fw, "\n");
    }
    //sortirovka
    
    for (k=0; k<razmer-1; k++)
    {
        for (j=0; j<razmer; j++)
        {
             for (i=0; i<razmer; i=i+2)
             {
                if (a[i][j]>a[i][j+1] && a[i][j+1]<0)
                {
                    tmp=a[i][j];
                    a[i][j]=a[i][j+1];
                    a[i][j+1]=tmp;
                }
            }
        }
    }
 
 
 
    //vivod otsortirovannogo massiva
    
    printf ("\n otsortirovannyi massiv: \n");
    fprintf (fw,"otsortirovanniy massiv: \n");
    for(i=0; i<razmer; i++)
    {
        for (j=0; j<razmer; j++)
        {
            printf("%10.0lf", a[i][j]);
            fprintf(fw, "%10.0lf" , a[i][j]);
        }
        printf("\n");
        fprintf(fw, "\n");
    }
    getch();
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.01.2010, 17:40     Сортировка отрицательных чисел нечетных строк
Еще ссылки по теме:

C++ Провести сортировку по возрастанию отрицательных чисел в нечетных строках
C++ Сортировка строк в файле по количеству чисел в строке
C++ Отсортировать по сумме нечетных и отрицательных элементов строк матрицы по возрастанию

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

Или воспользуйтесь поиском по форуму:
Tani
25 / 25 / 1
Регистрация: 27.12.2009
Сообщений: 82
09.01.2010, 17:40     Сортировка отрицательных чисел нечетных строк #29
Цитата Сообщение от valeriikozlov Посмотреть сообщение
Если все-таки в нечетных (нумерация строк начинается с нуля), то строку 24 заменить на :
Код C++
1
for (i=1;i<razmer;i+=2)
И твоя программа работает? Я вот сразу вижу, что она будет менять положительные элементы с отрицательными, хотя сортировать нужно только отрицательные
Yandex
Объявления
09.01.2010, 17:40     Сортировка отрицательных чисел нечетных строк
Ответ Создать тему
Опции темы

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