Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 06.11.2013
Сообщений: 5
1

Упорядочить строки целочисленной

07.11.2013, 08:07. Показов 1143. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Приветствую всех, мне нужно помощь в решении этой задачи, сам не могу поймать баг.. в целом все работает, но на деле выводит не до конца отредактированный массив. Заранее благодарен!

Упорядочить строки целочисленной прямоугольной матрицы по возрастанию суммы
//модулей их элементов. Найти номер первого из столбцов, содержащих хотя бы один
//отрицательный элемент.

#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include "conio.h"
#include "windows.h"
#include "string.h"
#include <iostream>

int main()
{

setlocale (LC_ALL,"Russian");
setlocale (LC_ALL, "rus");

int **mas = NULL;
int *sum = NULL;
int r, b, key;
int temp;
int i = 0, a = 0, j = 0, k = 1;

do
{
printf ("\n-----------------------------------------\n");
printf ("\n ---> 1 - Ввод массива и обработка \n ---> 0 - Выход \n");
key = getch();

switch (key)
{

case'1': //В этом блоке мы вводим массив и выполняем обраотку

int *sums = new int[b];

//////Вводим количество столбцов
do
{
printf ("\n-----------------------------------------\n");
printf ("\n Введите количество строк массива: ");
scanf ("%d", &r);

if (r <= 0)
{
printf ("\n -- Некорректное значение --\n");
}
}while (r <= 0);


//////Вводим количество столбцов
do
{
printf ("\n-----------------------------------------\n");
printf ("\n Введите количество столбцов массива: ");
scanf ("%d",&b);

if (b <= 0)
{
printf ("\n -- Некорректное значение --\n");
}
}while (b <= 0);

printf ("\n-----------------------------------------\n");

mas = new int*[r];

for (int i = 0; i < r; i++)
{
mas[i] = new int[b];
}

for (i = 0; i < r; i++)
{
for (j = 0; j < b; j++)
{
printf ("\n Введите A [%d][%d] = ", i, j); //Ввод массива
scanf ("%d", &mas[i][j]);
}
}

printf ("\n\n-----------------------------------------\n");
printf ("\n Первоначальный массив:\n\n");

for (int i = 0; i < r; ++i) //Вывод перваначального массива
{
for (int j = 0; j < b; ++j)
{
printf("%-5d", mas[i][j]);
}
printf("\n\n");
}

///////////

for(i = 0; i < r; ++i)
{
int sum = 0;
for(j = 0; j < b; ++j)
{
sum = sum + abs(mas[i][j]);
sums[i] = sum;
}
bool flag = false;

do
{
flag = false;
for(i = 0; i < r; i++)
{
if(sums[i] < sums[i-1])
{
int buf = sums[i-1];
sums[i] = sums[i-1];
sums[i-1] = buf;
int *tmp = mas[i];
mas[i] = mas[i-1];
mas[i-1] = tmp;
flag = true;
}
}
}while(flag = false);
}

printf ("\n\n-----------------------------------------\n");
printf ("\n Отредактированный массив:\n\n");

for (int i = 0; i < r; ++i) //Вывод отредактированного массива
{
for (int j = 0; j < b; ++j)
{
printf("%-5d", mas[i][j]);
}
printf("\n\n");
}

for(i = 0; i < r; ++i) //Вывод номера первого столбца с отрицательным элементом
{
for(j = 0; j < b; ++j)
{
if(mas[i][j] < 0)
{
while (a != 1)
{
printf ("\n-----------------------------------------\n");
printf("\n Номер первого столбца с отрицательным элементом: %d\n", j+1);
a = 1;
}
}
}
}

break;
}

}while (key !='0');
for (int i = 0; i < r; i++)
{
delete [] mas[i];
}
delete []mas;
delete []sum;

return 0;
}

Добавлено через 17 часов 51 минуту
Закройте тему, не актуально.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.11.2013, 08:07
Ответы с готовыми решениями:

Упорядочить строки целочисленной прямоугольной матрицы
упорядочить строки целочисленной прямоугольной матрицы по возрастанию количество одинаковых...

Упорядочить строки целочисленной прямоугольной матрицы
Упорядочить строки целочисленной прямоугольной матрицы по возрастанию ко-личества одинаковых...

Упорядочить строки целочисленной матрицы по возрастанию одинаковых элементов в строке
Помогите найти ошибку // Упорядочить строки целочисленной прямоугольной матрицы по возрастанию...

Упорядочить строки целочисленной матрицы по возрастанию количества одинаковых элементов
Задачка на С не очень сложная и, наверное, решается через динамический массив, но у меня что-то не...

1
96 / 748 / 279
Регистрация: 11.04.2012
Сообщений: 971
07.11.2013, 10:22 2
Лучший ответ Сообщение было отмечено QuanterSVETA как решение

Решение

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
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <memory.h>
 
#define N 10
 
void swap(int& n1, int& n2);
void swapptr(int*& ptr1, int*& ptr2);
 
int main(int argc, char* argv[])
{
    int** A = new int*[N];
    memset((void*)A, 0x00, 4 * N);
 
    for (int t1 = 0; t1 < N; t1++)
    {
        A[t1] = new int[N];
        for (int t2 = 0; t2 < N; t2++)
        {
            A[t1][t2] = rand() % 9 + 1;
            printf("%d ",A[t1][t2]);
        }
 
        printf("\n");
    }
 
    printf("\n");
 
    int* B = new int[N];
    memset((void*)B, 0x00, sizeof(int) * N);
 
    for (int i = 0; i < N; i++)
    {
        int j = 0, sum = 0;
        while (j < N) sum+=abs(A[i][j++]);
        if (sum > 0) B[i] = sum;
    }
 
    for (int k = 0; k < N; k++)
    {
        int min = k;
        for (int r = k+1; r < N; r++)
            min = (B[r] < B[min]) ? r : min;
 
        swap(B[k],B[min]);
        swapptr(A[k],A[min]);
    }
 
    for (int z1 = 0; z1 < N; z1++)
    {
        for (int z2 = 0; z2 < N; z2++)
            printf("%d ",A[z1][z2]);
 
        printf("sum = %d\n",B[z1]);
    }
 
    printf("\n");
 
    _getch();
}
 
void swap(int& n1, int& n2)
 { int _tn = n1; n1 = n2; n2 = _tn; }
 
void swapptr(int*& ptr1, int*& ptr2)
 { int* _tpn = ptr1; ptr1 = ptr2; ptr2 = _tpn; }
http://codepad.org/GHJ1kaBG
Миниатюры
Упорядочить строки целочисленной  
0
07.11.2013, 10:22
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.11.2013, 10:22
Помогаю со студенческими работами здесь

Упорядочить строки целочисленной прямоугольной матрицы по возрастанию суммы модулей их элементов
Доброго времени суток. Буду очень признателен, если поможете - данный сайт уже пару раз...

Упорядочить строки матрицы по возрастанию количества одинаковых элементов в строке
Упорядочить строки целочисленной прямоугольной матрицы по возрастанию количества одинаковых...

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

Упорядочить элементы в целочисленной матрице
Помогите разработать целочисленную матрицу n строк m-столбцев (1&lt;n&lt;=100) (1&lt;m&lt;=50) и упорядочить...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru