|
18.06.2009, 14:43
|
#1
|
Терабайт исходников
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений (для 6,051 пользователей)
|
Памагите новичку
-------разобрался
Последний раз редактировалось Mr_F_, 18.06.2009 в 14:50.
|
(Offline)
|
|
20.06.2009, 03:18
|
#2
|
Терабайт исходников
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений (для 6,051 пользователей)
|
Ответ: Памагите новичку
буквально позавчера начал изучать язык)
собственно вопрос: как найти нужный мне объект класса? т.е. у меня есть один интегер, и токо в одном из объектов он такой же.
для начала бы хотелось узнать как там делать переборы наподобие блицевского for...each)
ну и бонусом был бы рад узнать, есть ли какие-нибудь более быстрые методы чем полный перебор.
|
(Offline)
|
|
20.06.2009, 03:51
|
#3
|
|
Ответ: Памагите новичку
Mr_F_
создай список и заноси туда обьекты, более быстрые - сделать отсортированый масив и использовать двоичный поиск к примеру
|
|
|
Сообщение было полезно следующим пользователям:
|
|
27.06.2009, 22:43
|
#4
|
Знающий
Регистрация: 02.11.2007
Сообщений: 255
Написано 27 полезных сообщений (для 43 пользователей)
|
Ответ: Памагите новичку
Сообщение от Mr_F_
буквально позавчера начал изучать язык)
собственно вопрос: как найти нужный мне объект класса? т.е. у меня есть один интегер, и токо в одном из объектов он такой же.
для начала бы хотелось узнать как там делать переборы наподобие блицевского 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);
Ну это поиск не в этом смысле слова. Просто получаем возможность узнать если объект в векторе или нет и получаем его итератор после чего сможем с ним манипулирова удалить\переместить.
А вообще купи се книгу,Полный справочник по С++,автор Герберт Шилдт,очень хорошая книжка.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
29.06.2009, 12:08
|
#5
|
Оператор ЭВМ
Регистрация: 09.12.2008
Сообщений: 42
Написано 2 полезных сообщений (для 3 пользователей)
|
Ответ: Памагите новичку
Попытался отсортировать матрицу
Вот код самой сортировки:
// Сортировка матрицы
// 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;
// --------------------------------------------------------------------
}
сам пытался разобратся, и помоему компилятор вообще игнорирует сортировку, либо это я вообще не правильно написал
укажите на ошибку пожалуйста =)
__________________
Gameplay First
Последний раз редактировалось Chakki, 29.06.2009 в 12:24.
|
(Offline)
|
|
29.06.2009, 12:39
|
#6
|
|
Ответ: Памагите новичку
вот какой у тебя код
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
написанный таким образом код перестановки сортирует только внутри строки, те будет только отсортирована каждая строка, между строками сортировки не будет
так какая тебе сортировка надо ? для матрицы очень много способов есть её отсортировать
|
|
|
29.06.2009, 12:53
|
#7
|
Оператор ЭВМ
Регистрация: 09.12.2008
Сообщений: 42
Написано 2 полезных сообщений (для 3 пользователей)
|
Ответ: Памагите новичку
метод неважен)))
есть задача: отсортировать матрицу 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
__________________
Gameplay First
|
(Offline)
|
|
29.06.2009, 14:32
|
#8
|
|
Ответ: Памагите новичку
вот такой код сортировки должен работать
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;
}
}
}
}
|
|
|
Сообщение было полезно следующим пользователям:
|
|
29.06.2009, 15:32
|
#9
|
Оператор ЭВМ
Регистрация: 09.12.2008
Сообщений: 42
Написано 2 полезных сообщений (для 3 пользователей)
|
Ответ: Памагите новичку
Run-Time Check Failure #2 - Stack around the variable 'arr' was corrupted.
компилятор весь день шалит, сейчас выдал это.
Первый раз скомпилировал норм, выдал в отсортированном массиве вообще непонятные числа оО
второй раз ниче не менял откомпилировал, запустил, и в конце это выдал
__________________
Gameplay First
|
(Offline)
|
|
29.06.2009, 16:38
|
#10
|
|
Ответ: Памагите новичку
ух, недоглядел вот рабочий код
#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;
}
|
|
|
Сообщение было полезно следующим пользователям:
|
|
29.06.2009, 16:53
|
#11
|
Оператор ЭВМ
Регистрация: 09.12.2008
Сообщений: 42
Написано 2 полезных сообщений (для 3 пользователей)
|
Ответ: Памагите новичку
Благодарю =)
__________________
Gameplay First
|
(Offline)
|
|
01.07.2009, 12:16
|
#12
|
Оператор ЭВМ
Регистрация: 09.12.2008
Сообщений: 42
Написано 2 полезных сообщений (для 3 пользователей)
|
Ответ: Памагите новичку
задали задачу создать список из n элементов и там далее вычисления, это пока не важно)
и вот вопрос, зделать его массивом
или использовать библиотеку <list>
и создавать на самом деле список list<int> бла бла бла и так далее?)
__________________
Gameplay First
|
(Offline)
|
|
01.07.2009, 12:41
|
#13
|
|
Ответ: Памагите новичку
Chakki
тебе же написали что список, значит список
|
|
|
01.07.2009, 14:45
|
#14
|
Blitz's Shame !!
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений (для 2,013 пользователей)
|
Ответ: Памагите новичку
задали задачу создать список из n элементов и там далее вычисления, это пока не важно)
и вот вопрос, зделать его массивом
или использовать библиотеку <list>
и создавать на самом деле список list<int> бла бла бла и так далее?)
|
ну смотря кто и как задал !!
ели ты учишся там где-тов школе или универе, то такие задания дают для того что бы студент разобрался в самом принципе работы связаных списков, нада вручную добавлять, изменять, удалять !!
можно заюзать контейнер ЛИСТ, там все ети алгоритмы уже есть !! тебе остается их только применить к своему контейнеру !! работать все будут на ура !! но принципе этой работы тоже знать нада !!
|
(Offline)
|
|
01.07.2009, 15:01
|
#15
|
Злобный Админ
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений (для 9,330 пользователей)
|
Ответ: Памагите новичку
ВИдимо у тебя !! это признак конца строки...
__________________
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 14:15.
|