PDA

Просмотр полной версии : Помогите пожалуйста! Задача на С++



AsekarT
29.04.2006, 20:58
Задание:
Составить программу для сортировки двумерного массива размерностью 10 на 10 елементов методом "Пуззырька" по заданному столбцу.
Пожалуста помогите кто занет, я не очень силен в програмировании!
Заранее благодарен за понимание! :!:

BAHTY3
30.04.2006, 01:17
Кодить не осмелюсь могу ощибиться за неимением компилятора но:

Как я понял задачу: Создать массив и по заданному столбцу сортировать... Сортируется только заданный столбец...

Алгоритм:

Создаешь массив, выводишь... Поскольку у тя массив в виде матрици mass[10][10], то просто делаешь ввод с клавы № столбца... Приняв значение переписываешь весь столбец в одномерный (временный) массив... Его то ты и сортируешь, после чего переписываешь вместо заданного столбца и выводишь весь свой массив...

Примерно так:



int mass[10][10]; //основной масств...
int m[10]; //массив для сортировки солбца...
int i=j=a=0; //счетчики для масствов...
int c,d; //хранят информацию о обрабатываемом столбце...
int x; //переменная для перестановки элементов...
int q=1; //счетчик для сортировки... если замен не произошло то он
//будет равен 0 тогда сортировка завершенна...
for (i=0,i<10,i++) //начало ввода массива...
{
for (j=0,j<10,j++)
{
scanf ("%d ", mass[i][j]);
}
printf ("/n");
}
printf ("/n");
for (i=0,i<10,i++) //начало вывода массива...
{
for (j=0,j<10,j++)
{
printf ("%d ", mass[i][j]);
}
printf ("/n");
}
scanf ("%d", c); //ввод переменной по столбцу...
scanf ("%d", d); // по строке...
i=c;j=d;
for (i=0,i<10,i++) //переписка столбца во временный массив...
{
m[a]=mass[i][j];
a++;
}
while (q!=0) // начало сортировки пузырьком...
{
q=0;
for (a=0,a<0,a++)
{
if (m[a]>m[a+1])
{
x=m[a+1];
m[a+1]=m[a];
m[a]=x;
q++;
}
}
for (a=0,a<10,a++) //перепись обработанного столбца обратно...
{
for (i=0,i<10,i++)
{
mass[i][j]=m[a];
}
}
for (i=0,i<10,i++) //вывод обработанного массива...
{
for (j=0,j<10,j++)
{
printf ("%d ", mass[i][j]);
}
printf ("/n");
}



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

AsekarT
30.04.2006, 12:54
Огромное спасибо тебе за помощь и отзывчивость, успехов в коддинге!!! :wink:

BAHTY3
30.04.2006, 13:31
Спасибки... Тебе тогоже... Ошибки есть???

AsekarT
30.04.2006, 13:42
Я вчера ось переставлял, и щас вот ставлю, через минут 5 проверю и сразу напишу работоспособность.... У меня вопрос один есть: а printf это то же самое, что и cout?
В коде есть cin и я так не понял, каким оператором он в твоем коде называется?

AsekarT
30.04.2006, 14:19
#include <iostream.h>
#include <stdio.h>
#include <time.h>
#include <math.h>

int main() {
int mass[10][10]; //&icirc;&ntilde;&iacute;&icirc;&acirc;&iacute;&icirc;&eacute; &igrave;&agrave;&ntilde;&ntilde;&ograve;&acirc;...
int m[10]; //&igrave;&agrave;&ntilde;&ntilde;&egrave;&acirc; &auml;&euml;&yuml; &ntilde;&icirc;&eth;&ograve;&egrave;&eth;&icirc;&acirc;&ecirc;&egrave; &ntilde;&icirc;&euml;&aacute;&ouml;&agrave;...
int i=j=a=0; //&ntilde;&divide;&aring;&ograve;&divide;&egrave;&ecirc;&egrave; &auml;&euml;&yuml; &igrave;&agrave;&ntilde;&ntilde;&ograve;&acirc;&icirc;&acirc;...
int c,d; //&otilde;&eth;&agrave;&iacute;&yuml;&ograve; &egrave;&iacute;&ocirc;&icirc;&eth;&igrave;&agrave;&ouml;&egrave;&thorn; &icirc; &icirc;&aacute;&eth;&agrave;&aacute;&agrave;&ograve;&ucirc;&acirc;&agrave;&aring;&igrave;&icirc;&igrave; &ntilde;&ograve;&icirc;&euml;&aacute;&ouml;&aring;...
int x; //&iuml;&aring;&eth;&aring;&igrave;&aring;&iacute;&iacute;&agrave;&yuml; &auml;&euml;&yuml; &iuml;&aring;&eth;&aring;&ntilde;&ograve;&agrave;&iacute;&icirc;&acirc;&ecirc;&egrave; &yacute;&euml;&aring;&igrave;&aring;&iacute;&ograve;&icirc;&acirc;...
int q=1; //&ntilde;&divide;&aring;&ograve;&divide;&egrave;&ecirc; &auml;&euml;&yuml; &ntilde;&icirc;&eth;&ograve;&egrave;&eth;&icirc;&acirc;&ecirc;&egrave;... &aring;&ntilde;&euml;&egrave; &ccedil;&agrave;&igrave;&aring;&iacute; &iacute;&aring; &iuml;&eth;&icirc;&egrave;&ccedil;&icirc;&oslash;&euml;&icirc; &ograve;&icirc; &icirc;&iacute;
//&aacute;&oacute;&auml;&aring;&ograve; &eth;&agrave;&acirc;&aring;&iacute; 0 &ograve;&icirc;&atilde;&auml;&agrave; &ntilde;&icirc;&eth;&ograve;&egrave;&eth;&icirc;&acirc;&ecirc;&agrave; &ccedil;&agrave;&acirc;&aring;&eth;&oslash;&aring;&iacute;&iacute;&agrave;...
for (i=0;i<10;i++) //&iacute;&agrave;&divide;&agrave;&euml;&icirc; &acirc;&acirc;&icirc;&auml;&agrave; &igrave;&agrave;&ntilde;&ntilde;&egrave;&acirc;&agrave;...
{
for (j=0;j<10;j++)
{
scanf ("%d ", mass[i][j]);
}
printf ("/n");
}
printf ("/n");
for (i=0;i<10;i++) //&iacute;&agrave;&divide;&agrave;&euml;&icirc; &acirc;&ucirc;&acirc;&icirc;&auml;&agrave; &igrave;&agrave;&ntilde;&ntilde;&egrave;&acirc;&agrave;...
{
for (j=0;j<10;j++)
{
printf ("%d ", mass[i][j]);
}
printf ("/n");
}
scanf ("%d", c); //&acirc;&acirc;&icirc;&auml; &iuml;&aring;&eth;&aring;&igrave;&aring;&iacute;&iacute;&icirc;&eacute; &iuml;&icirc; &ntilde;&ograve;&icirc;&euml;&aacute;&ouml;&oacute;...
scanf ("%d", d); // &iuml;&icirc; &ntilde;&ograve;&eth;&icirc;&ecirc;&aring;...
i=c;
j=d;
for (i=0;i<10;i++) //&iuml;&aring;&eth;&aring;&iuml;&egrave;&ntilde;&ecirc;&agrave; &ntilde;&ograve;&icirc;&euml;&aacute;&ouml;&agrave; &acirc;&icirc; &acirc;&eth;&aring;&igrave;&aring;&iacute;&iacute;&ucirc;&eacute; &igrave;&agrave;&ntilde;&ntilde;&egrave;&acirc;...
{
m[a]=mass[i][j];
a++;
}
while (q!=0) // &iacute;&agrave;&divide;&agrave;&euml;&icirc; &ntilde;&icirc;&eth;&ograve;&egrave;&eth;&icirc;&acirc;&ecirc;&egrave; &iuml;&oacute;&ccedil;&ucirc;&eth;&uuml;&ecirc;&icirc;&igrave;...
{
q=0;
for (a=0;a<0;a++)
{
if (m[a]>m[a+1])
{
x=m[a+1];
m[a+1]=m[a];
m[a]=x;
q++;
}
}

for (a=0;a<10;a++) //&iuml;&aring;&eth;&aring;&iuml;&egrave;&ntilde;&uuml; &icirc;&aacute;&eth;&agrave;&aacute;&icirc;&ograve;&agrave;&iacute;&iacute;&icirc;&atilde;&icirc; &ntilde;&ograve;&icirc;&euml;&aacute;&ouml;&agrave; &icirc;&aacute;&eth;&agrave;&ograve;&iacute;&icirc;...
{
for (i=0;i<10;i++)
{
mass[i][j]=m[a];
}
}

for (i=0;i<10;i++) //&acirc;&ucirc;&acirc;&icirc;&auml; &icirc;&aacute;&eth;&agrave;&aacute;&icirc;&ograve;&agrave;&iacute;&iacute;&icirc;&atilde;&icirc; &igrave;&agrave;&ntilde;&ntilde;&egrave;&acirc;&agrave;...
{
for (j=0;j<10;j++)
{
printf ("%d ", mass[i][j]);
}
printf ("/n");
}

}


Вот в таком виде я компилил твой код, а оно выдает такие ошибки:

--------------------Configuration: rgr1 - Win32 Debug--------------------
Compiling...
rgr1.cpp
E:\Program Files\Microsoft Visual Studio\MyProjects\rgr1\rgr1.cpp(9) : error C2065: 'j' : undeclared identifier
E:\Program Files\Microsoft Visual Studio\MyProjects\rgr1\rgr1.cpp(9) : error C2065: 'a' : undeclared identifier
E:\Program Files\Microsoft Visual Studio\MyProjects\rgr1\rgr1.cpp(72) : fatal error C1004: unexpected end of file found
Error executing cl.exe.


Странновато как-то!!

AsekarT
30.04.2006, 14:22
#include <iostream.h>
#include <stdio.h>
#include <time.h>
#include <math.h>

int main()

{
int mass[10][10];
int m[10];
int i=j=a=0;
int c,d;
int x;
int q=1;
for (i=0;i<10;i++)
{
for (j=0;j<10;j++)
{
scanf ("%d ", mass[i][j]);
}
printf ("/n");
}
printf ("/n");
for (i=0;i<10;i++)
{
for (j=0;j<10;j++)
{
printf ("%d ", mass[i][j]);
}
printf ("/n");
}
scanf ("%d", c);
scanf ("%d", d);
i=c;
j=d;
for (i=0;i<10;i++)
{
m[a]=mass[i][j];
a++;
}
while (q!=0)
{
q=0;
for (a=0;a<0;a++)
{
if (m[a]>m[a+1])
{
x=m[a+1];
m[a+1]=m[a];
m[a]=x;
q++;
}
}

for (a=0;a<10;a++)
{
for (i=0;i<10;i++)
{
mass[i][j]=m[a];
}
}

for (i=0;i<10;i++)
{
for (j=0;j<10;j++)
{
printf ("%d ", mass[i][j]);
}
printf ("/n");
}

}


Так лучше!

AsekarT
30.04.2006, 14:23
+ в условиях вида
for (i=0;i<10;i++) у тебя стояли запятые, компилятор ругался и я поставил точки с запятыми, после этого он утих...

BAHTY3
30.04.2006, 15:54
Молодца что заменил... косяк за мной... printf это из С а в С++ ет cout a scanf - cin... просто я начинал с С так что за мной водится такое... Хотя ты должен бы знать такое... Других ошибок небыло???

AsekarT
30.04.2006, 16:23
А как те ошибки исправить, которые выше? Знаешь?

BAHTY3
30.04.2006, 18:08
попробуй завести все переменные отдельно :
int j;
int a;
а так же просто скопируй код и создай новый проект...

AsekarT
30.04.2006, 19:35
В приципе янашел другое решение этой задачи:


#include <stdlib.h>
#include <stdio.h>
#include <time.h>


void main()
{
int i, j;
int j0; // Столбец
printf("\n Enter number of a row: ");
scanf("%d",&j0);
printf("\n");
printf("------------------------------------------------------------\n");
j0 = j0--;
int N=10;
int** a;

a = new int*[N];
for (i=0; i<N; i++) a[i] = new int[N];

srand( (unsigned)time( NULL ) );

for (i=0; i<N; i++)
for (j=0; j<N; j++)
a[i][j] = rand();

for (i=0; i<N; i++)
{
for (j=0; j<N; j++) printf("%6d", a[i][j]);
printf("\n");
}

for (int k=0; k<N-1; k++)
{
for (i=0; i<N-1-k; i++)
{
if (a[i][j0] > a[i+1][j0])
{
int* p = a[i];
a[i] = a[i+1];
a[i+1] = p;
}
}
}

printf("---------------------------Result---------------------------\n");
for (i=0; i<N; i++)
{
for (j=0; j<N; j++) printf("%6d", a[i][j]);
printf("\n");
}

for (i=0; i<N; i++) delete[] a[i];
delete[] a;
printf("------------------------------------------------------------\n");
}

ты не знаешь, как тут можна заменить scanf() и printf() на cout и cin?
Это самый тяжелый вопрос...

BAHTY3
04.05.2006, 09:33
1) #include <iostrim.h>
2) cuot << что выводить << параметры вывода
примерно тоже и с cin