std::sort прекрасно применяется и для обычных массивов:
int mass[10];
std::sort( mass, mass+10 );
MonkeyHip
Ребят гляньте что не так, первая часть задания найти первый столбец где нет отрицательного элемента срабатывает,
А вот отсортировать элементы именно СТОЛБЦА не выходит. бредово сортирует как то.
include <stdio.h>
include <conio.h>
include <iostream>
void main ()
{
const int str=5;
const int stolb=5;
int i,j;
float massiv[str][stolb];
for (int a = 0; a <str; a++)
{
for (int b = 0; b <stolb; b++)
{
massiv[a][b]=-10 + rand() % 21;
printf(«massiv:%1.1f\t», massiv[a][b]); // выводим матрицу на экран
}
}
printf(«n\n\n»);
int Stolbez = 0;
int flag;
for (int i = 0; i <str; i++)
{ // здесь ищем колонки без отрицательных чисел
for(int j = 0; j <stolb; j++)
{
if (massiv[i][j] >= 0)
{
flag = true;
continue;
}
else
{
flag = false;
break;
}
}
if (flag)
Stolbez = i + 1;
}
if (Stolbez)
printf(«Nomer pervogo izstolbcov ne soderzh ni odnogo otric elementa:%d\n», Stolbez);
else
printf(«All columns contains negative numbers.\n»);
MonkeyHip, ты не мог бы взять на себя труд оформлять код программы в посте с нормальным форматированием. Способ указан прямо над полем ввода комментария. Способ с обратными апострофами («вручную») — надёжнее.
А то твой перекорёженный код разбирать и потом для себя ручками форматировать — ломает ((
Макар
По поводу текста программы: присоединяюсь к предыдущему оратору ))
Я вот чего-то не понял, а зачем тебе СТОЛБЕЦ сортировать? В твоем задании вроде такой задачи вообще ни где не ставится. Или я что-то где-то упустил?
А сортировка у тебя действительно странненькая. Пузырек по ходу.
Вот код для Пузырька. Откуда брал не помню.
int ary[ARY_LEN];
//...
for (int i = 0; i < ARY_LEN - 1; i++)
{
for (int j = 1; j < ARY_LEN - i; j++)
{
if (ary[j] < ary[j - 1] )
swap(&ary[j], &ary[j - 1]);
}
}
MonkeyHip
Да извините за код, я тут новенький, буду знать. я же написал что мне нужно отсортировать по столбцам и найти столбец без отрицательных. у меня вроде как сортирует но странновато как то.
пузырьком я понимааю что проще и лучше, но я немного не понимаю сам метод что вот это за ARY_LEN — 1; и ARY_LEN — i;
Макар
я же написал что мне нужно отсортировать по столбцам и найти столбец без отрицательных
Ну да, найти столбец без отрицательных значений. А сортировать-то столбцы зачем?
Достаточно просто последовательно просматривать каждый столбец на предмет отрицательных значений.
Перед просмотром очередного столбца выставляешь флаг наличия отрицательного элемента в false. Просматриваешь столбец. Если очередной элемент отрицательный, переводишь флаг в true и переходишь к следующему столбцу. Если просмотр столбца прошел полностью и флаг остался false, значит этот столбец без отрицательных элементов. Задача решена.
Макар
ARY_LEN — длина массива. Видимо целая константа или макрос (#define).
ARY_LEN - 1; — значение на единицу меньшее, чем длина массива ))
ARY_LEN - i; — в данном случае, во втором цикле массив просматривается до i-ого элемента. Правее все значения уже отсортированы.
В твою сортировку я что-то не въехал ((
А по форматированию кода — хрен редьки не слаще ((
Ты действительно так пишешь код? Если да, то срочно учись форматировать код. Иначе с твоими исходниками ни кто дела иметь не захочет.
MonkeyHip
Ну да, найти столбец без отрицательных значений. А сортировать-то столбцы зачем?
так мне задали дополнительно, столбцы отсортировать,по возрастанию вместо того упорядочивания.) вот и спрашиваю, может кто знает, как именно столбцы отсортировать)
MonkeyHip
извините за код.
#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]=-10 + rand() % 20;
// printf("massiv:%d\t", 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 foundColumn = 0;
int flag;
for (int i = 0; i <str; i++)
{ // здесь ищем колонки без отрицательных чисел
for(int j = 0; j <stolb; j++)
{
if (massiv[i][j] >= 0)
{
flag = true;
continue;
}
else
{
flag = false;
break;
}
}
if (flag)
foundColumn = i + 1;
}
if (foundColumn)
printf("Nomer pervogo izstolbcov ne soderzh ni odnogo otric elementa:%d\n", foundColumn);
else
printf("All columns contains negative numbers.\n\n\n");
for(int c=0;c<=(str*stolb);c++) //количество проходов
{
for(int j=0; j<stolb;j++) // сорртировка солбцов по возрастанию
{
for(int i=0;i<str-j-1;i++)
{
if(massiv[i][j]> massiv[i+1][j])
{
int temp =massiv [i][j];
massiv [i][j]=massiv[i+1][j];
massiv[i+1][j]=temp;
}
}
}
}
for (i=0; i<str; ++i)
{
for (j=0; j<stolb; ++j)
printf("massiv %d ",massiv[i][j]);
printf ("\n");
}
}
Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.
std::sort
прекрасно применяется и для обычных массивов:Ребят гляньте что не так, первая часть задания найти первый столбец где нет отрицательного элемента срабатывает,
А вот отсортировать элементы именно СТОЛБЦА не выходит. бредово сортирует как то.
include <stdio.h>
include <conio.h>
include <iostream>
void main ()
{
const int str=5;
const int stolb=5;
int i,j;
float massiv[str][stolb];
for (int a = 0; a <str; a++)
{
for (int b = 0; b <stolb; b++)
{
massiv[a][b]=-10 + rand() % 21;
printf(«massiv:%1.1f\t», massiv[a][b]); // выводим матрицу на экран
}
}
printf(«n\n\n»);
int Stolbez = 0;
int flag;
for (int i = 0; i <str; i++)
{ // здесь ищем колонки без отрицательных чисел
for(int j = 0; j <stolb; j++)
{
if (massiv[i][j] >= 0)
{
flag = true;
continue;
}
else
{
flag = false;
break;
}
}
if (flag)
Stolbez = i + 1;
}
if (Stolbez)
printf(«Nomer pervogo izstolbcov ne soderzh ni odnogo otric elementa:%d\n», Stolbez);
else
printf(«All columns contains negative numbers.\n»);
for(int c=0;c<=(str*stolb);c++) //количество проходов
{
for(int j=0; j<stolb;j++) // сортировка столбцов по возрастанию
{
for(int i=0;i<str-1;i++)
{
if(massiv[i][j]>massiv[i][j+1])
{
int temp =massiv [i][j];
massiv [i][j]=massiv[i][j+1];
massiv[i][j+1]=temp;
}
}
}
}
for(int j=0; j<stolb;j++)
{
for(int i=0;i<str;i++)
{
printf(«mass %1.1f\t»,massiv[i][j]); //отсортированный массив
}
}
}
MonkeyHip, ты не мог бы взять на себя труд оформлять код программы в посте с нормальным форматированием. Способ указан прямо над полем ввода комментария. Способ с обратными апострофами («вручную») — надёжнее.
А то твой перекорёженный код разбирать и потом для себя ручками форматировать — ломает ((
По поводу текста программы: присоединяюсь к предыдущему оратору ))
Я вот чего-то не понял, а зачем тебе СТОЛБЕЦ сортировать? В твоем задании вроде такой задачи вообще ни где не ставится. Или я что-то где-то упустил?
А сортировка у тебя действительно странненькая. Пузырек по ходу.
Вот код для Пузырька. Откуда брал не помню.
Да извините за код, я тут новенький, буду знать. я же написал что мне нужно отсортировать по столбцам и найти столбец без отрицательных. у меня вроде как сортирует но странновато как то.
Вот моя сортировка.
пузырьком я понимааю что проще и лучше, но я немного не понимаю сам метод что вот это за ARY_LEN — 1; и ARY_LEN — i;
Ну да, найти столбец без отрицательных значений. А сортировать-то столбцы зачем?
Достаточно просто последовательно просматривать каждый столбец на предмет отрицательных значений.
Перед просмотром очередного столбца выставляешь флаг наличия отрицательного элемента в false. Просматриваешь столбец. Если очередной элемент отрицательный, переводишь флаг в true и переходишь к следующему столбцу. Если просмотр столбца прошел полностью и флаг остался false, значит этот столбец без отрицательных элементов. Задача решена.
ARY_LEN
— длина массива. Видимо целая константа или макрос (#define
).ARY_LEN - 1;
— значение на единицу меньшее, чем длина массива ))ARY_LEN - i;
— в данном случае, во втором цикле массив просматривается до i-ого элемента. Правее все значения уже отсортированы.В твою сортировку я что-то не въехал ((
А по форматированию кода — хрен редьки не слаще ((
Ты действительно так пишешь код? Если да, то срочно учись форматировать код. Иначе с твоими исходниками ни кто дела иметь не захочет.
так мне задали дополнительно, столбцы отсортировать,по возрастанию вместо того упорядочивания.) вот и спрашиваю, может кто знает, как именно столбцы отсортировать)
извините за код.