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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.03.2011, 07:59   #1
Pina_Kolada
 
Регистрация: 27.11.2010
Сообщений: 7
По умолчанию Ошибки в массивах С++

Помогите, пожалуйста исправить ошибки в программах. два дня бьюсь((

1. Дана последовательность из 15 вещественных чисел. Наибольшее число этой последовательности поменять с первым числом, а наименьшее с последним.

Код:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
float mas[15];

int i,min,max;
{


for(i=0;i<14;i++);
mas[i]=StrToFloat(StringGrid1->Cells[i][0]);
{
min=mas[0];
if (mas[i]<min)
min=mas[i];
}

for (i=0;i<14;i++);
{
max=mas[0];
if (mas[i]>max)
max=mas[i];
}
mas[15]=max;
{
 for (i=0;i<14;i++)
StringGrid2->Cells[i][0]=FloatToStr(mas[i]);
}
}
}
//---------------------------------------------------------------------------
2.В двумерном массиве целых чисел поменять местами строки, симметричные относительно середины массива.(горизонтальной линии)


Код:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
#include <malloc.h>
#include <math.h>
int n,m;
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::StringGrid1Click(TObject *Sender)
{
int n=StrToInt(Edit1->Text),m=StrToInt(Edit2->Text);
StringGrid1->RowCount=n;
StringGrid1->ColCount=m;
StringGrid2->RowCount=n;
StringGrid2->ColCount=m;
}
//---------------------------------------------------------------------------
void __fastcall TProgramm:Button1Click(TObject *Sender)
{
int i,j;
int m,n;
n=StrToInt(EdStrok->Text);
m=StrToInt(EdStolb->Text);
x= new  float*[n];     
for (i=0; i<n; i++)
x[i]=new float[m];  
for (i=0;i<n;i++)
for (j=0;j<m;j++)
x[i][j]=StrToFloat(StrGridInput->Cells[j][i]);  
for (i=0;i<n;i++)
for (j=0;j<m;j++)

begin
if (n%2=0)
{
for (i=0;i<n-1;i++)
for (j=0;j<m-1;j++)
{
int k= int x[i][j];
x[i][j]= x[n-1-i][j];
x[n-1-i][j]= k;
}
}
else
{
else
begin
for (i=0;i<(n/2)-1);i++)
for (j=0;j<m-1;i++)
{
k=x[i][j];
x[i][j]=x[n-1-i][j];
x[n-1-i][j]=k;
}
}
for (i=0;i<n-1;i++)
for (j=0;j<m-1;j++)
StrGridOutput->Cells[j][i]=FloatToStr(x[i][j]);
{
{
for (j=0;i<m-1;i++)
{
k=x[i][j];
x[i][j]=x[n-1-i][j];
x[n-1-i][j]=k;
}
}
for (i=0;i<n-1;i++)
for (j=0;j<m-1;j++)
StrGridOutput2->Cells[j][i]=FloatToStr(x[i][j]);
}
}

Последний раз редактировалось ACE Valery; 18.03.2011 в 14:33.
Pina_Kolada вне форума Ответить с цитированием
Старый 18.03.2011, 09:23   #2
Sweta
Форумчанин
 
Регистрация: 22.11.2007
Сообщений: 664
По умолчанию

В первой задаче
Код:
for(i=0;i<15;i++);
mas[i]=StrToFloat(StringGrid1->Cells[i][0]); //заполняется в цикле массив
//Цикл окончен, т. е дальше не в цикле, поэтому необходимо исправить
min=mas[0];
max=mas[0];
for(i=1;i<15;i++)
{
if (mas[i]<min)
min=mas[i];
if (mas[i]>max)
max=mas[i];
}
Так определите мин и мах, а дальше уже подкорректируйте программу сами, не получиться пишите.
Используйте тег CODE для оформления програмы, для чего выделите текс программы и нажмите значок #на панели сообщения.
Неприятности приходят и уходят, а жизнь продолжается!

Последний раз редактировалось Sweta; 18.03.2011 в 09:26.
Sweta вне форума Ответить с цитированием
Старый 18.03.2011, 09:30   #3
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Код:
for(i=0;i<15;i++);// убрать точку с запятой
Надо писать так:
Код:
for(i=0;i<15;i++)
    mas[i]=StrToFloat(StringGrid1->Cells[i][0]);
Или так:
Код:
for(i=0;i<15;i++)
{
    mas[i]=StrToFloat(StringGrid1->Cells[i][0]);
}
Иначе цикл заканчивается "ничем".
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 18.03.2011, 09:57   #4
Pina_Kolada
 
Регистрация: 27.11.2010
Сообщений: 7
По умолчанию

Цитата:
Так определите мин и мах, а дальше уже подкорректируйте программу сами, не получиться пишите.
Используйте тег CODE для оформления програмы, для чего выделите текс программы и нажмите значок #на панели сообщения.
Мин и макс находит, но почему то заменяет и первый и последний элемент минимальным.
Pina_Kolada вне форума Ответить с цитированием
Старый 18.03.2011, 18:07   #5
Sweta
Форумчанин
 
Регистрация: 22.11.2007
Сообщений: 664
По умолчанию

Покажите код. Перед выводом присвоили соответствующим элементам массива полученные значения? При выводе учли, что в массиве 15 элементов, а не 14?
Неприятности приходят и уходят, а жизнь продолжается!
Sweta вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос о двумерных массивах nicklan Visual C++ 10 12.10.2010 12:15
функции в массивах udwik Общие вопросы C/C++ 1 25.01.2010 22:52
Вопрос о массивах makSum Помощь студентам 3 07.06.2008 21:58