forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   C++ (http://forum.boolean.name/forumdisplay.php?f=22)
-   -   Памагите новичку (http://forum.boolean.name/showthread.php?t=8500)

Mr_F_ 18.06.2009 14:43

Памагите новичку
 
-------разобрался

Mr_F_ 20.06.2009 03:18

Ответ: Памагите новичку
 
буквально позавчера начал изучать язык)

собственно вопрос: как найти нужный мне объект класса? т.е. у меня есть один интегер, и токо в одном из объектов он такой же.

для начала бы хотелось узнать как там делать переборы наподобие блицевского for...each)

ну и бонусом был бы рад узнать, есть ли какие-нибудь более быстрые методы чем полный перебор.

jimon 20.06.2009 03:51

Ответ: Памагите новичку
 
Mr_F_
создай список и заноси туда обьекты, более быстрые - сделать отсортированый масив и использовать двоичный поиск к примеру

Genius 27.06.2009 22:43

Ответ: Памагите новичку
 
Цитата:

Сообщение от Mr_F_ (Сообщение 108322)
буквально позавчера начал изучать язык)

собственно вопрос: как найти нужный мне объект класса? т.е. у меня есть один интегер, и токо в одном из объектов он такой же.

для начала бы хотелось узнать как там делать переборы наподобие блицевского for...each)

ну и бонусом был бы рад узнать, есть ли какие-нибудь более быстрые методы чем полный перебор.

Про for
int data[10];
for( int i=0; i < 10; i++ )
{
data[i]=i;
}

Можно хранить объекты в std::map

Например

struct Object
{
....
};

std:map<Object*,int> objects;

запись:
Object* myObject = new Object();
int integer = 5;
objects[integer] = myObject;

получение
Object* obj = objects[integer];

так-же для проверки существует ли объект по нужному индификатору можно с помощью функции objects.find(...),тоесть:

if(objects.find(integer) == objects.end())
{

не существует
}else{

существует
}

можно юзать std::vector для хранения

поиск легко делать:

std::vector<Object*>::iterator i = find(objects.begin(),objects.end(),object);
Ну это поиск не в этом смысле слова. Просто получаем возможность узнать если объект в векторе или нет и получаем его итератор после чего сможем с ним манипулирова удалить\переместить.

А вообще купи се книгу,Полный справочник по С++,автор Герберт Шилдт,очень хорошая книжка.

Chakki 29.06.2009 12:08

Ответ: Памагите новичку
 
Попытался отсортировать матрицу
Вот код самой сортировки:
Код:

// Сортировка матрицы
// Chakki.F

#include "stdafx.h"
#include "conio.h"
#include "iostream"
#define n 3
#define m 3

using namespace std;


int main()
{
// Обьявление переменных и ввод массива ---------------------
        cout << "Enter 9 numbers: \n" << '\n';
        int arr[n][m],i,j,a,k;
        int temp;
        int size;

        size = n*m;
        a = 0;

        for(i=0;i<n;i++)
        {  for(j=0;j<m;j++)
        {  cin >> arr[i][j];
        } }
// Вывод исходного массива -----------------------------------
        cout << "Your array:\n" << '\n';

        for(i=0;i<n;i++)
        {  cout << '\n';
                for(j=0;j<m;j++)
        {  cout << arr[i][j] << ' ';
        } }
        cout << '\n' << '\n';
// Сортировка -------------------------------------------------
    for(k=0;k<size;k++)
{        for(i=1;i<size;i++)
        {  for(j=size-1;j>=size;j--)
        {  if(arr[j-1][a] > arr[j][a])
        {  temp = arr[j-1][a];
          arr[j-1][a] = arr[j][a];
          arr[j][a] = temp;
        }  } }
    a++;
}

// Вывод -------------------------------------------------------
        cout << "New array:\n" << '\n';
        for(i=0;i<n;i++)
        {  cout << '\n';
        {  for(j=0;j<m;j++)
        { 
                cout << arr[i][j] << ' ';
        }
        }  }

// -------------------------------------------------------------------
        printf("Press any key to continue...\n");
    getch();

        return 0;
// --------------------------------------------------------------------
}

сам пытался разобратся, и помоему компилятор вообще игнорирует сортировку, либо это я вообще не правильно написал
укажите на ошибку пожалуйста =)

jimon 29.06.2009 12:39

Ответ: Памагите новичку
 
вот какой у тебя код
Код:

for(k[=0;k<size;k++)
{
        for(i=1;i<size;i++)
        {
                for(j=size-1;j>=size;j--)
                {
                        if(arr[j-1][a] > arr[j][a])
                        {
                                temp = arr[j-1][a];
                                  arr[j-1][a] = arr[j][a];
                                  arr[j][a] = temp;
                        }

                }
        }
            a++;
}

как видишь у тебя нету использования переменных k и i
написанный таким образом код перестановки сортирует только внутри строки, те будет только отсортирована каждая строка, между строками сортировки не будет

так какая тебе сортировка надо ? для матрицы очень много способов есть её отсортировать :)

Chakki 29.06.2009 12:53

Ответ: Памагите новичку
 
метод неважен)))
есть задача: отсортировать матрицу n*m =)
у мен с сортировками очень плохо, уже пару дней пытался догнать)))

обнаружил косячек, ну теперь начал чтото делать, но что непонятно оО

Код:

for(k[=0;k<size;k++)
{
        for(i=1;i<size;i++)
        {
                for(j=size-1;j>=i;j--)
                {
                        if(arr[j-1][a] > arr[j][a])
                        {
                                temp = arr[j-1][a];
                                  arr[j-1][a] = arr[j][a];
                                  arr[j][a] = temp;
                        }
                }
        }
            a++;
}

k - использовал как счетчик, но все равно все не то
голова уж пухнет, практика стоит, а скоро еще и защищать :D

jimon 29.06.2009 14:32

Ответ: Памагите новичку
 
вот такой код сортировки должен работать

Код:

for(int i=0;i<size;i++)
{
        for(int j=0;j<size-1;j++)
        {
                for(int k=j+1;k<size;k++)
                {
                        if(arr[i][j-1] > arr[i][j])
                        {
                                int temp = arr[i][j];
                                arr[i][j] = arr[i][j-1];
                                arr[i][j-1] = temp;
                        }
                }
        }
}


Chakki 29.06.2009 15:32

Ответ: Памагите новичку
 
Run-Time Check Failure #2 - Stack around the variable 'arr' was corrupted.
компилятор весь день шалит, сейчас выдал это.
Первый раз скомпилировал норм, выдал в отсортированном массиве вообще непонятные числа оО
второй раз ниче не менял откомпилировал, запустил, и в конце это выдал

jimon 29.06.2009 16:38

Ответ: Памагите новичку
 
ух, недоглядел :) вот рабочий код

Код:

#include <iostream>

#define N 3
#define M 3

int main()
{
        int arr[N][M];

        for(int i=0;i<N;i++)
                for(int j=0;j<M;j++)
                        std::cin >> arr[i][j];

        for(int i=0;i<N;i++)
                for(int j=0;j<M-1;j++)
                        for(int k=M-1;k>j;k--)
                                if(arr[i][k-1] > arr[i][k])
                                {
                                        int temp = arr[i][k];
                                        arr[i][k] = arr[i][k-1];
                                        arr[i][k-1] = temp;
                                }

        for(int i=0;i<N;i++)
        {
                for(int j=0;j<M;j++)
                        std::cout << arr[i][j] << " ";
                std::cout << std::endl;
        }

        return 0;
}


Chakki 29.06.2009 16:53

Ответ: Памагите новичку
 
Благодарю =)

Chakki 01.07.2009 12:16

Ответ: Памагите новичку
 
задали задачу создать список из n элементов и там далее вычисления, это пока не важно)
и вот вопрос, зделать его массивом
или использовать библиотеку <list>
и создавать на самом деле список list<int> бла бла бла и так далее?)

jimon 01.07.2009 12:41

Ответ: Памагите новичку
 
Chakki
тебе же написали что список, значит список

IGR 01.07.2009 14:45

Ответ: Памагите новичку
 
Цитата:

задали задачу создать список из n элементов и там далее вычисления, это пока не важно)
и вот вопрос, зделать его массивом
или использовать библиотеку <list>
и создавать на самом деле список list<int> бла бла бла и так далее?)
ну смотря кто и как задал !!
ели ты учишся там где-тов школе или универе, то такие задания дают для того что бы студент разобрался в самом принципе работы связаных списков, нада вручную добавлять, изменять, удалять !!
можно заюзать контейнер ЛИСТ, там все ети алгоритмы уже есть !! тебе остается их только применить к своему контейнеру !! работать все будут на ура !! но принципе этой работы тоже знать нада !! :)

SBJoker 01.07.2009 15:01

Ответ: Памагите новичку
 
ВИдимо у тебя !! это признак конца строки... :)

IGR 01.07.2009 17:57

Ответ: Памагите новичку
 


> ВИдимо у тебя !! это признак конца строки...

!! - конец строки типа T_NORMAL
?? - конец строки типа T_QUESTION
... - конец строки типа T_INFINITY

Aleksei 07.08.2010 23:21

Ответ: Памагите новичку
 
всем добрый вечер.
Сейчас начинаю писать прогу, она иллюстрирует карточный фокус. По алгоритму будет угадывать, какую карту загадал пользователь.
Пишу на ксорсе.
Вопрос такой,
Имеетя одна большая картинка, на которой нарисованы все 52 карты колоды, как ее разделять на отдельные изображения карт?

Knightmare 07.08.2010 23:23

Ответ: Памагите новичку
 
xLoadAnimImage()/xLoadAnimTexture()

Aleksei 07.08.2010 23:37

Ответ: Памагите новичку
 
немного тогда не так вопрос задал. Имеетя картинка, допустим размером 950 на 390 там в 4 строках и 13 столбцах карты нарисованы. Размер одной - 73 на 98 получается.
Что бы рисовать !по одной карте нужно что.. загрузить большую картинку в буфер, а дальше как из большой маленькие делать?
спрашиваю потому что первый раз подобное пишу.. это как? тайлы называется?

Knightmare 07.08.2010 23:38

Ответ: Памагите новичку
 
Я вроде конкретно ответил как. Подробности знает документация.

Randomize 08.08.2010 03:22

Ответ: Памагите новичку
 
Цитата:

Сообщение от Aleksei (Сообщение 157626)
немного тогда не так вопрос задал. Имеетя картинка, допустим размером 950 на 390 там в 4 строках и 13 столбцах карты нарисованы. Размер одной - 73 на 98 получается.
Что бы рисовать !по одной карте нужно что.. загрузить большую картинку в буфер, а дальше как из большой маленькие делать?
спрашиваю потому что первый раз подобное пишу.. это как? тайлы называется?

Уважаемый, вы ошиблись разделом. Я понимаю, что вы возможно пользуетесь для разработки языком C++, но для движка Xors3D есть отдельный форум:
http://forum.boolean.name/forumdisplay.php?f=126
Впредь прошу писать там.


Часовой пояс GMT +4, время: 11:46.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Перевод: zCarot