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

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

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.11.2010, 02:56   #1
Shabalinuk
 
Регистрация: 12.11.2010
Сообщений: 4
По умолчанию Ошибка в temp... виноваты динамичсекие массивы или тип не тот или..

Задача.
Написать программу по обработке динамических массивов. Размеры массивов вводить с клавиатуры. При создании оконного приложения скалярный (простой) результат выводить в виде компоненты Label, а массивы вводить и выводить с помощью компонент StringGrid, в которых 0-й столбец и 0-ю строку использовать для отображения индексов массивов.
!!!!! В матрице размером N M поменять местами строку,
содержащую элемент с наибольшим значением со строкой,
содержащей элемент с наименьшим значением.
****

Задача вроде решена.. но ошибка в строчке temp =a[i][j] ;..
предполагаю, что как-то неправильно организована работа с динамическим массивом или проблемы с типом temp... Подскажите, пожалуйста... я честно уже устала искать причину...

вот код(в среде C++ Builder 6):
Код:
//------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
 #include <math.h>
#include <conio.h>
#include <stdlib.h>

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
int n = 3;					// Глобальная переменная nчяЯ
void __fastcall TForm1::FormCreate(TObject *Sender)
{
        Edit1->Text=IntToStr(n);
        StringGrid1->ColCount = n+1;        StringGrid1->RowCount = n+1;
        StringGrid2->ColCount = n+1;        StringGrid2->RowCount = n+1;

//---------- Ввод в левую верхнюю ячейку таблицы названия массивов -----------
        StringGrid1->Cells[0][0] = "Матрица A";
        StringGrid2->Cells[0][0] = "Массив B";
        for(int i=1; i<=n;i++){
         StringGrid1->Cells[0][i]="i="+IntToStr(i);
         StringGrid1->Cells[i][0]="j="+IntToStr(i); }
         for(int i=1; i<=n;i++){
         StringGrid2->Cells[0][i]="i="+IntToStr(i);
         StringGrid2->Cells[i][0]="j="+IntToStr(i);
        }

}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
        double **a, temp, s ;  int  min,max,imin,imax, j,i;					// Декларация указателей
        a = new double*[n];      				// Захват памяти под указатели
        for(i=0; i<n;i++)  
			a[i] = new double[n];         		// Захват памяти под элементы

// Заполнение массивов А элементами из таблиц StringGrid1 и StringGrid2
       {	for(i=0; i<n;i++)
        for(j=0; j<n;j++)
        a[i][j]=StrToFloat(StringGrid1->Cells[i+1][j+1]);
	}

/*  . В матрице размером N M поменять местами строку,
содержащую элемент с наибольшим значением со строкой,
 содержащей элемент с наименьшим значением
  */
   min=max=a[0][0];
   imin =imax=0;
{for (i=0; i<n; i++)
for (j=0; j<n; j++)
{if (a[i][j]<min) { min=a[i][j]; imin=i; }
else
if (a[i][j]>max) { max=a[i][j]; imax=i; }

} } 
//
 for (j=0; j<n; j++)
 ///*меняем местами элементы строк
  {temp =a[i][j] ;
   a[imin][j]=a[imax][j];
 a[imax][j]= temp ;
   }
       for(i=0; i<n;i++)
     { for(j=0; j<n;j++)
      StringGrid2->Cells[i+1][j+1]=FloatToStr(a[i][j]); }

 }
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
      Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit1Change(TObject *Sender)     //изменение размера матрицы
{
int i;
        	n=StrToInt(Edit1->Text);
        	StringGrid1->ColCount = n+1;
         	StringGrid1->RowCount = n+1;
                StringGrid2->ColCount = n+1;
         	StringGrid2->RowCount = n+1;
               	for(i=1; i<=n;i++){
                StringGrid1->Cells[0][i]="i="+IntToStr(i);
                StringGrid1->Cells[i][0]="j="+IntToStr(i);
                StringGrid2->Cells[0][i]="i="+IntToStr(i);
                StringGrid2->Cells[i][0]="j="+IntToStr(i);
        	}
              
}
//---------------------------------------------------------------------------

Последний раз редактировалось Stilet; 12.11.2010 в 09:40.
Shabalinuk вне форума Ответить с цитированием
Старый 12.11.2010, 09:40   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

А текст ошибки где?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.11.2010, 10:40   #3
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Так может
Код:
   {
   temp =a[imin][j] ;
   a[imin][j]=a[imax][j];
   a[imax][j]= temp ;
   }
?
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 12.11.2010, 11:32   #4
Shabalinuk
 
Регистрация: 12.11.2010
Сообщений: 4
По умолчанию

Была такая ошибка:
Floating-point operands are not allowed in these operators

shift (SHL, SHR)
bitwise Boolean (AND, OR, XOR, NOT)
conditional (?
indirection (*)
certain others

The compiler found a floating-point operand with one of these prohibited operators.


Сейчас ее нету..
У меня так и было просто наверное случайно поменяла перед вставкой...
Теперь в проге:
{temp =a[imin][j] ;
a[imin][j]=a[imax][j];
a[imax][j]= temp ;
}
компилируется..
но Результате ...не меняет местами...(((
Shabalinuk вне форума Ответить с цитированием
Старый 12.11.2010, 11:36   #5
Shabalinuk
 
Регистрация: 12.11.2010
Сообщений: 4
По умолчанию

)))) вру.. она меняет местами столбцы....а не строки..
вот и где теперь ошибка??
вроде все правильно....ррр...

Последний раз редактировалось Shabalinuk; 12.11.2010 в 12:05.
Shabalinuk вне форума Ответить с цитированием
Старый 12.11.2010, 12:38   #6
Shabalinuk
 
Регистрация: 12.11.2010
Сообщений: 4
По умолчанию

Плиз, посмотрите незамыленным взглядом....
Shabalinuk вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как отследить приложение которое использует тот или иной файл? pro100-delphi Общие вопросы Delphi 9 18.06.2010 01:19
Ошибка " Record, object or class type required " (Запись, объектный или классический тип требовались) kta87 Помощь студентам 2 28.02.2010 10:04
Это ошибка Delphi или моя ошибка??? bloodeagle Общие вопросы Delphi 3 12.11.2009 15:26
Класс или тип (сам не знаю) WOLFak Общие вопросы Delphi 6 27.03.2008 00:20