Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.11.2011, 18:12   #1
Тамарочка
Пользователь
 
Регистрация: 19.11.2011
Сообщений: 13
Восклицание Перевод двумерного массива в одномерный (С++)

Что то не получается, как сделать??
Заранее благодарю))
//Laba7
Код:
#include <conio.h>
#include <iostream.h>
#include <stdlib.h>
#include <math.h>
void main()
{int i,j;
const int raw=3,col=3;
float a[col][raw],mas[col*raw],c;
srand(time(NULL));

   for(i = 0; i< 3; i++)
     for(j =0; j<3;j++)
     { 
      a[i][j] =(rand()%110)-10;
   }
    cout<<"Result:"<<endl;
  for(i = 0; i < 3; i++){
    for(j = 0; j < 3; j++){
      cout<< a[i][j] << " ";
    }
    cout<< endl;
  }
cout<<"\n";
int k=0;
for(j=0; j<raw; j++)
{
for(i=0; i<col; i++)
{
mas[k]=a[i][j];
k++;
}
}
cout<<mas[k];
}
Изображения
Тип файла: jpg Безымянный.jpg (24.8 Кб, 162 просмотров)

Последний раз редактировалось rpy3uH; 30.11.2011 в 14:04.
Тамарочка вне форума Ответить с цитированием
Старый 28.11.2011, 18:15   #2
Тамарочка
Пользователь
 
Регистрация: 19.11.2011
Сообщений: 13
По умолчанию

В последствии мне нужно отсортировать двумерный массив по убыванию.Искала как это сделать, сделала вывод-самый надежный способ это перевод двумерного в одномерный и его сортировка.
Тамарочка вне форума Ответить с цитированием
Старый 28.11.2011, 18:43   #3
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

Код:
int k=0;
for(i =0; i < row; i++)
    for(j = 0; j < col; j++)
        mas[k++]=a[i][j];
У тебя матрица записывалась в массив по вертикалям. То есть, сначала первый столбец, потом второй, потом третий. Надо же, насколько я понял, по строкам -- первая строка, вторая, третья.

ЗЫ по-английски "строка" -- row, а не raw
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Старый 30.11.2011, 11:26   #4
Тамарочка
Пользователь
 
Регистрация: 19.11.2011
Сообщений: 13
По умолчанию

Спасибо,разобралась.
Только вот незадача, перевела одномерный массив в двумерный,вывожу его,а программа выводит не отсортированный т.е. исходный массив((
Скорее всего прога запуталась в моих массивах,пыталась создать указатель на mas,но т.к. он типа Float выходит ошибка
Illegal use of floating point.....Воть((
PHP код:
//Laba7
#include <conio.h>
#include <iostream.h>
#include <stdlib.h>
#include <math.h>
void main()
{
int i,j,c,b,k;
const 
int row=3,col=3;
float a[col][row]/*={{9,8,7},{6,5,4},{3,2,1}}*/,mas[9];
srand(time(NULL));
    for(
0i3i++)
     for(
=0j<3;j++)
     { 
      
a[i][j] =(rand()%110)-10;
   }
    
cout<<"Result:"<<endl;
  for(
03i++){
    for(
03j++){
      
cout<< a[i][j] << " ";
    }
    
cout<< endl;
  }

cout<<"\n"<<"Odnomernii massiv";
k=0;
for(
i=0i<rowi++)
{
 for(
j=0;j<col;j++)
 {
mas[k++]=a[i][j];
}
}
for(
k=0;k<9;k++)
{
cout<<" "<<mas[k]<<" ";
}
cout<<"\n"<<"Sortirovka";
for(
c=1;c<8;c++)
{
 for(
k=0;k<9-c;k++)
 { if(
mas[k]>mas[k+1])
 {
b=mas[k];
 
mas[k]=mas[k+1];
 
mas[k+1]=b;}
 }
}
for(
k=0;k<9;k++)
{
cout<<" "<<mas[k]<<" ";
}
cout<<"\n"<<"Dvumernii massiv";
for(
i=0i<rowi++)
{
 for(
j=0;j<col;j++)
 {
a[i++][j++]=mas[k];
}
}
cout<<endl;
 for(
j=0;j<col;j++)
 {
 for(
i=0i<rowi++)
 {
  
cout<<" "<<a[j][i];
 }
 
cout<< endl;
}
getch();

Тамарочка вне форума Ответить с цитированием
Старый 30.11.2011, 11:27   #5
Тамарочка
Пользователь
 
Регистрация: 19.11.2011
Сообщений: 13
По умолчанию

Темка UPP!!!
Тамарочка вне форума Ответить с цитированием
Старый 30.11.2011, 12:05   #6
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

Вот тут пример на С сортировки пузырьковым методом.
Учись пользоваться поиском -)
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Старый 30.11.2011, 13:28   #7
mrChester
Я
Форумчанин
 
Аватар для mrChester
 
Регистрация: 24.04.2010
Сообщений: 693
По умолчанию

Код:
cout<<"\n"<<"Sortirovka";
int i=0;
 while (i<8)
 { if(mas[i]>mas[i+1])
    {b=mas[i];
      mas[i]=mas[i+1];
      mas[i+1]=b;}
     }
}
for(k=0;k<9;k++)
{
cout<<" "<<mas[k]<<" ";
}
cout<<"\n"<<"Dvumernii massiv";
k=0;
for(i=0; i<row; i++)
{
 for(j=0;j<col;j++)
 {
   a[i][j]=mas[k++];
  }
}
cout<<endl;
 for(j=0;j<col;j++)
 {
 for(i=0; i<row; i++)
 {
  cout<<a[j][i]<<" ";
 }
 cout<< endl;
} 
getch();
Все персонажи вымышлены, все совпадения случайны.
Если жизнь игра, тогда я её разработчик ©.
mrChester вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Преобразование двумерного массива в одномерный... S.Mihail Паскаль, Turbo Pascal, PascalABC.NET 5 09.12.2011 19:24
Как обнулить элементы строки двумерного массива, содержащей наибольшее количество элементов одномерного массива griignat Помощь студентам 1 22.11.2011 20:04
Обработка двумерного массива Happy001 Помощь студентам 0 07.03.2011 01:41
Из двумерного в одномерный массив elsin Общие вопросы Delphi 1 16.01.2009 03:58