Страница 1 из 2

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

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

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

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

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

Алгоритм:

Создаешь массив, выводишь... Поскольку у тя массив в виде матрици 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");
}

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

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

Добавлено: 30 апр 2006, 13:31
BAHTY3
Спасибки... Тебе тогоже... Ошибки есть???

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

Добавлено: 30 апр 2006, 14:19
AsekarT

Код: Выделить всё

#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; //ñ÷åò÷èê äëÿ ñîðòèðîâêè... åñëè çàìåí íå ïðîèçîøëî òî îí 
//áóäåò ðàâåí 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"); 
} 

}

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

Код: Выделить всё

--------------------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.

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

Добавлено: 30 апр 2006, 14:22
AsekarT

Код: Выделить всё

#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"); 
} 

}

Так лучше!

Добавлено: 30 апр 2006, 14:23
AsekarT
+ в условиях вида

Код: Выделить всё

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

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

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