Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
Monkey-hpster
0 / 0 / 0
Регистрация: 02.11.2014
Сообщений: 5
1

Найти первый столбец в котором нет отрицательных элементов, отсортировать элементы столбцов по убыванию

18.11.2014, 19:54. Просмотров 526. Ответов 3
Метки нет (Все метки)

Задание такое, найти первый столбец в котором не содержится отрицательных элементов, и еще отсортировать элементы столбцов по убыванию( сортировку я сделал кое как).но вот проблема с нахождением этого столбца, выдает бред какой то.Посмотрите пожалуйста.

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
76
77
78
#include <stdio.h>
#include <conio.h>
#include <iostream>
 
void main ()
 
{
    const int str=5;
        const int stolb=4;
        int i,j;
    int massiv[str][stolb];
 
for (int a = 0; a <str; a++)
   {
        for (int b = 0; b <stolb; b++)
      {
                  massiv[a][b]=0 + rand() % 20;                 
        } 
   }
 
for (i=0; i<str; ++i)
{
for (j=0; j<stolb; ++j)
printf("massiv %d  ",massiv[i][j]);
printf ("\n");
}
 
printf("\n\n");
 
int kolon = 0;
    bool flag;
 
    for (j = 0; j < stolb; j++)
    {                                            // здесь ищем колонки без отрицательных чисел
        for (i = 0; i < str-1; i++)
        {
            if (massiv[i][j] >= 0)                         
              {
                  flag = true;
                continue;
              }
            else
            {
                
                flag = false;
               break;
 
            }
        }
            if (flag)
           kolon=i+1 ;
              
    }
 
if (flag)
 
printf("Nomer pervogo izstolbcov ne soderzh ni odnogo otric elementa:%d\n", kolon);
    else
        printf("All columns contains negative numbers.\n\n\n");
 
int tmp;
 for (j = 0; j < stolb; j++)      // мотаю цикл столбцов             //сортировка по столбцам.строки не трогаю
        for (i = 0; i < str-1; i++)                      // мотаю цикл строк
            for (int k = i; k < str; k++)                        // сортирующий цикл
                if (massiv[i][j] > massiv[k][j])
                {
                   tmp = massiv[i][j];                         // если одно число больше следующего 
                   massiv[i][j] = massiv[k][j];                 // меняю местами
                   massiv[k][j] = tmp;                       
                }
for (i=0; i<str; ++i)
{                                                     // вывод отсортированного массива
for (j=0; j<stolb; ++j)
printf("massiv %d  ",massiv[i][j]);
printf ("\n");
}
 
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.11.2014, 19:54
Ответы с готовыми решениями:

Найти в матрице первый столбец, все элементы которого отрицательны и среднее арифметическое этих столбцов
Вычесть полученное из всех элементов матрицы

Найти в матрице последний столбец, в котором положительных элементов больше чем отрицательных
прошу помощи=) нужно найти в матрице mxn последний столбец в котором положительных элементов...

В двумерном массиве найти первый столбец, в котором нет элементов кратных числу n
определяет первый столбец, в котором нет элементов кратных заданному числу n

Найти первый столбец матрицы не содержащий отрицательных элементов
/*ищем первый столбец не содержащий отриц. элементов и выводим № этого столбца. Но я не могу...

Упорядочить элементы столбцов матрицы по убыванию, а столбцы по убыванию модуля произведения четных элементов столбцов
На контрольной дали задачу. Не знаю как написать. Помогите!:help: Дана матрица действительных...

3
ValeryS
Модератор
7747 / 5756 / 748
Регистрация: 14.02.2011
Сообщений: 19,709
Завершенные тесты: 1
18.11.2014, 20:03 2
ну для начала
код в плюсах
а ветка про СИ

Добавлено через 1 минуту
Цитата Сообщение от Monkey-hpster Посмотреть сообщение
// здесь ищем колонки без отрицательных чисел
а смысл???
Цитата Сообщение от Monkey-hpster Посмотреть сообщение
massiv[a][b]=0 + rand() % 20;
все положительные
0
deepz
62 / 62 / 53
Регистрация: 04.10.2013
Сообщений: 263
18.11.2014, 20:47 3
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
76
77
78
79
80
81
82
#include <stdio.h>
#include <conio.h>
#include <iostream>
 
void main ()
 
{
    const int str=5;
        const int stolb=4;
        int i,j;
    int massiv[str][stolb];
 
for (int a = 0; a <str; a++)
   {
        for (int b = 0; b <stolb; b++)
        {
                  scanf_s("%d", &massiv[a][b]);                 
        } 
   }
 
for (i=0; i<str; ++i)
{
for (j=0; j<stolb; ++j)
printf("massiv %d  ",massiv[i][j]);
printf ("\n");
}
 
printf("\n\n");
 
int kolon = 0;
    bool flag;
 int k=0;
    for (j = 0; j < stolb; j++)
    {                                            // здесь ищем колонки без отрицательных чисел
        for (i = 0; i < str-1; i++)
        {
            if (massiv[i][j] >= 0)                         
              {
                  flag = true;
                  continue;
              }
            else
            {                
                flag = false;
                break; 
            }
       }
            if ((flag)&&(k==0))
            {
                kolon=j+1;   
                k++;                
            }
    }
 
if (flag)
 
printf("Nomer pervogo iz stolbcov ne soderzh ni odnogo otric elementa: %d\n", kolon);
    else
        printf("All columns contains negative numbers.\n\n\n");
 
 
 
 
int tmp;
 for (j = 0; j < stolb; j++)      // мотаю цикл столбцов             //сортировка по столбцам.строки не трогаю
        for (i = 0; i < str-1; i++)                      // мотаю цикл строк
            for (int k = i; k < str; k++)                        // сортирующий цикл
                if (massiv[i][j] > massiv[k][j])
                {
                   tmp = massiv[i][j];                         // если одно число больше следующего 
                   massiv[i][j] = massiv[k][j];                 // меняю местами
                   massiv[k][j] = tmp;                       
                }
for (i=0; i<str; ++i)
{                                                     // вывод отсортированного массива
for (j=0; j<stolb; ++j)
printf("massiv %d  ",massiv[i][j]);
printf ("\n");
}
_getch();
 
}
Лучше вводить с клавиатуры, и заранее написать на листочке какой-нибудь пример, который 100% будет работать.

Добавлено через 7 минут
C
1
2
3
4
5
if ((flag)&&(k==0))
            {
                kolon=j+1;   
                k++;                
            }
во-первых Вы в kolon записывали значение строк i;
во-вторых break; выходит только из внутреннего for; и поэтому в
C
1
if (flag) kolon=j+1;
после выполнения еще одного витка в for (j = 0; j < stolb; j++) выполняется еще раз
C
1
if (flag) kolon=j+1;
тем самым выдавая не верный результат. Что бы этого не было нужно сделать ключ k=0; который будет отвечать за вход в
C
1
if((flag)&&(k==0)
если 0 значит еще не было столбца с положительными элементами, а если уже был такой столбце, то k уже изменилось на k=k+1;
C
1
2
3
4
5
if ((flag)&&(k==0))
            {
                kolon=j+1;   
                k++;                
            }
и оно отлично от 0. и поэтому не пройдет условный цикл if. Как-то так
0
Monkey-hpster
0 / 0 / 0
Регистрация: 02.11.2014
Сообщений: 5
19.11.2014, 20:31  [ТС] 4
Код в СИ) да вы правы, что все положительные здесь (massiv[a][b]=0 + rand() % 20 и по сути должно выдавать 1ый столбец, а выдает как сказал deepz совсем иное, я просто уже запутался думал хоть тут помогут разобраться.
поэтому и спросил у вас)) я примерно понял в чем ошибка, но как оформить нормально не смекну до сих пор.

Добавлено через 9 минут
deepz, простите, не заметил что вы разложили все так по полочкам идеально. Я слету глянул, и показалось, что вы просто показали мне мои ошибки)) спасибо вам, буду вникать и разбираться, что бы таких вопросов не возникало))

Добавлено через 1 час 6 минут
Слушайте, а не прокатывает когда 1ый столбец имеет отрицательные элементы а следующий нет. и тогда не выдает 2ой. а просто говорит что все столбцы отрицательны(

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
19.11.2014, 20:31
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.11.2014, 20:31

В матрице найти количество чётных элементов. Вывести на печать первый столбец массива, отсортированный по убыванию
В массиве А найти количество чётных элементов. Вывести на печать первый столбец массива,...

В матрице найти первый столбец, содержащий максимальное количество отрицательных элементов
В матрице найти первый столбец, содержащий максимальное количество отрицательных элементов, и...

Поменять местами первый столбец с номером один и первый из столбцов, содержащий только положительные элементы.
Дана матрица размера 5 x 10. Поменять местами первый столбец с номером один и первый из столбцов,...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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