Модераторы: Poseidon

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Массивы, Курсовая работа 
:(
    Опции темы
13KAIN
Дата 22.3.2006, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 20.3.2006

Репутация: нет
Всего: нет



Слухай я тут надыбал такую же задачу тока на Паскале вроде чёто сделано
БЛИН НА С++ НАДА smile
http://forum.vingrad.ru/index.php?showtopic=64807

Спасиб за ссылки !!!
PM MAIL   Вверх
darkart
Дата 22.3.2006, 19:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 379
Регистрация: 9.11.2005

Репутация: 26
Всего: 31



Не волновой, тупой перебор, да я его еще и не тестил:
Код

#include<iostream>
#include<conio.h>
using namespace std;
void InputMatrix(int** Matrix,int dim)
//ввод квадратной матрицы размерности dim x dim
{
    for(int i=0;i<dim;i++)
        for(int j=0;j<dim;j++)
            cin>>Matrix[i][j];

}
void PrintMatrix(int** Matrix,int dim)
//печать квадратной матрицы размерности dim x dim
{
    for(int i=0;i<dim;i++)
    {
        for(int j=0;j<dim-1;j++)
            cout<<Matrix[i][j]<<" ";
        cout<<Matrix[i][dim-1]<<"\n";
    }
}
void FindMinPath(int** Matrix,int dim,int i,int j,int step,int sum,int& bestsum)
{
    sum+=Matrix[i][j];//добавляем значение ячейки
    if(step<dim*dim&&(sum<bestsum||!bestsum))//ходов не может быть больше, чем размерность в квадрате
    {    
        if(i==dim-1&&j==dim-1)//если правый нижний угол
        {
            bestsum=sum;//запоминаем лучшее значение
        }
        else
        {
            step++;//увеличение шага
            if(i)FindMinPath(Matrix,dim,i-1,j,step,sum,bestsum);//для левой ячейки
            if(j)FindMinPath(Matrix,dim,i,j-1,step,sum,bestsum);//для нижней ячейки
            if(i<dim-1)FindMinPath(Matrix,dim,i+1,j,step,sum,bestsum);//для правой ячейки
            if(j<dim-1)FindMinPath(Matrix,dim,i,j+1,step,sum,bestsum);//для верхней ячейки
        }    
    }
}
int main()
{
    int dim,bestsum=0;//dim -размерность, bestsum - лучший результат
    cout<<"Please enter a dimensionality:\n";
    cin>>dim;//ввод размерности
    int** Matrix;//указатель на матрицу
    Matrix=new int*[dim];
    for(int i=0;i<dim;i++)
        Matrix[i]=new int[dim];
    cout<<"Please enter a matrix("<<dim<<"x"<<dim<<"):\n";
    InputMatrix(Matrix,dim);
    cout<<"Source matrix:\n";
    PrintMatrix(Matrix,dim);
    FindMinPath(Matrix,dim,0,0,0,0,bestsum);//рекурсивный поиск
    for(int i=0;i<dim;i++)
        delete[] Matrix[i];
    delete[] Matrix;    
    cout<<"Min path="<<bestsum<<"\n";//вывод результата
    getch();
    return 0;
}

P.S. надеюсь работает

Это сообщение отредактировал(а) darkart - 22.3.2006, 20:37
PM MAIL WWW ICQ Skype GTalk   Вверх
13KAIN
Дата 22.3.2006, 21:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 20.3.2006

Репутация: нет
Всего: нет



Парни я хочу в эту прогу код закинуть

Код


Unit1.cpp

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "CSPIN"
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn2Click(TObject *Sender)
{
int i,j, k=0;  //НАЧАЛО     //ВОТ В МЕСТО ЭТОГО КОДА Я И ХОЧУ ПОСТАВИТЬ СВОЙ ДЛЯ РАСЧЁТА СУММЫ!!!!
for(i=0;i<n;i++)
for(j=0;j<m;j++)
 { b[k]=a[i][j];k++;}
 StringGrid2->RowCount=0;
 StringGrid2->ColCount=m*n;
for(j=0;j<m*n;j++)
 StringGrid2->Cells[j][0]=b[j];   // КОНЕЦ
}
//---------------------------------------------------------------------------


void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
int i,j;
 n=CSpinEdit1->Value;
 m=CSpinEdit2->Value;
 StringGrid1->RowCount=n;
 StringGrid1->ColCount=m;
 randomize;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
 a[i][j]=random(10)-random(7);
for(i=0;i<n;i++)
for(j=0;j<m;j++)
 StringGrid1->Cells[j][i]=a[i][j];
 StringGrid1->RowCount=n;
 StringGrid1->ColCount=m;
}
//---------------------------------------------------------------------------


Код


Unit1.h

//---------------------------------------------------------------------------

#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include "CSPIN.h"
#include <Buttons.hpp>
#include <ComCtrls.hpp>
#include <Grids.hpp>
#include <AppEvnts.hpp>
#include <ExtCtrls.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:    // IDE-managed Components
        TLabel *Label1;
        TLabel *Label2;
        TPageControl *PageControl1;
        TCSpinEdit *CSpinEdit1;
        TCSpinEdit *CSpinEdit2;
        TBitBtn *BitBtn1;
        TBitBtn *BitBtn2;
        TTabSheet *TabSheet1;
        TTabSheet *TabSheet2;
        TStringGrid *StringGrid1;
        TStringGrid *StringGrid2;
        void __fastcall BitBtn2Click(TObject *Sender);
        void __fastcall BitBtn1Click(TObject *Sender);
private:    // User declarations
public: int a[10][10],b[100],n,m; 
        __fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif


РАБОЧАЯ ПРОГА НА 100%



Это сообщение отредактировал(а) 13KAIN - 22.3.2006, 21:17
PM MAIL   Вверх
IvanK2
Дата 6.4.2006, 09:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 24.3.2006

Репутация: нет
Всего: нет



darkart большое спасибо. Всё курсовую я сдал благодаря тебе.

PM MAIL   Вверх
darkart
Дата 6.4.2006, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 379
Регистрация: 9.11.2005

Репутация: 26
Всего: 31



Рад был помочьsmile
PM MAIL WWW ICQ Skype GTalk   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0451 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.