Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Обучение и начало програмирования на С++

Автор: pochti
Дата сообщения: 06.10.2005 17:59
Как скопировать задачу с одного принтера на другой?

Используя функции VC++: AddJob(), CopyFile(), SetJob(),
была скопирована задача с первого принтера на второй. Второй принтер - копия
первого. Оба принтера установлены на одном компьютере и имеют одно печатающее устройство
вывода информации. Настройки задачи (число напечатанных копий, тип документа: альбомный)
при копировании почему-то не были сохранены. С чем это может быть связано подскажите
пожалуйста? Либо функции пишу не верно, либо настройки вообще нельзя скопировать?
Автор: Men_In_Black
Дата сообщения: 07.10.2005 04:04
aleoizi

Цитата:
Интересная тема кстати, может кто что нибудь поизящнее предложет?


Код: #include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

void main()
{
vector<int> array;

array.push_back(1);
array.push_back(2);
array.push_back(3);
array.push_back(4);
array.push_back(5);

copy(array.begin(), array.end(), ostream_iterator<int>(cout, "\r\n"));
}
Автор: aleoizi
Дата сообщения: 08.10.2005 14:30
Даа, чуствую что за STL надо взяться посерьезнее
Автор: sket4
Дата сообщения: 21.10.2005 18:23
Jeck
#include "/path/to/your/file.h"
либо уже в гцц указывать.
Автор: wiwiw
Дата сообщения: 22.10.2005 05:17

Цитата:
Код:

Код:
#include <vector>
#include <algorithm>

using namespace std;

class Picture
{
...
public:
Picture (const char *path)
{
...
}
};

void DrawPicture(const Picture& picture)
{
...
}

void main()
{
vector<Picture> array;

array.push_back(Picture("C:\\мышка.jpg"));
array.push_back(Picture("C:\\слоник.jpg"));
array.push_back(Picture("C:\\гиппопотамчик.jpg"));

for_each(array.begin(), array.end(), DrawPicture);
}     

Автор: WWWovan
Дата сообщения: 28.10.2005 13:18
Люди, не пинайте сильно за вопрос.
Можно ли создать масив элементов класса?
Если можно то как?
Как потом к ним обращаться?
Как добавлять новый элемент в это масив?
Автор: WiseAlex
Дата сообщения: 28.10.2005 13:57
WWWovan

Цитата:
Можно ли создать масив элементов класса?

штатными средствами - нет
Если массив экземпляров класса, то:
да

Цитата:
Если можно то как?

как обычный массив

Цитата:
Как потом к ним обращаться?

как обычно


Код:
//описываем класс
class A{
public:
.....
}
//создаем массив
A a_array[10];
//обращение
a[1].ЧленКласса;
Автор: WWWovan
Дата сообщения: 28.10.2005 14:00
WiseAlex
Если можно немного подробнее о динамических масивах обьектов...
Или ссылочку где можно почитать об этом...

Добавлено:
И еще... Вы пишете, что добавление новых элементов динамического массива осуществляеться через new.
Он добавляеться к предиущим элементам масива?
Как определить количество элементов такого массива(команда)?
Автор: WiseAlex
Дата сообщения: 28.10.2005 15:18
WWWovan

Цитата:
Если можно немного подробнее о динамических масивах обьектов...

лучше использовать std::vector, но если хочется самому, принцип такой
храним размер массива и указатель на него. Первоначально выделяем как обычно т.е. new A[n];
добавление: new A[n+1] - затем копируем все n элементов в новый массив, и копируем новый элемент в n+1 элемент. далее удаляем предыдущий массив и присваиваем указателю на массив указатель на новый массив, изменяем текущее значение размера на size+1
все. (это без дополнительной буферизации, но суть такая в любом случае)
Автор: Xarde
Дата сообщения: 01.11.2005 11:40
Если элементов требуется хранить ОЧЕНЬ много (общий расход памяти сравним с имеющейся в системе), то надо применять динамическую связку элементов массива, потому как может не хватить памяти при создании массива [size+1]. Скорось упадёт, зато больше влезет.
Правда, лучше, чем std:: (тот же вектор или же очередь, которую я предпочитаю вектору) написать будет непросто.
Автор: STEEL
Дата сообщения: 01.11.2005 17:35
Приветствую, у меня есть программка которая слушает порт, необходимо одновременно слушать допустим два порта, как запустить несколько циклов?
ЗЫ: пока что работаю над тем, чтобы в одном цикле слушать несколько портов, но это пока не обсуждается :-P
Интересна многопоточность.
Автор: OdesitVadim
Дата сообщения: 01.11.2005 19:23
STEEL

Цитата:
как запустить несколько циклов?

В смысле потоков?
Наиболее просто делать один поток на порт и в нём организовывать "слушанье". Потом прото запускаеш несколько потоков, передав им в качестве параметра номер порта. Для уменьшения кол-ва глюков в будующем сразу делай всё роботу с портом внутри потока.
Автор: STEEL
Дата сообщения: 02.11.2005 21:00
OdesitVadim
Спасибо конечно. Но в юниксе это не так актуально. Написал на Си программку, слушает одновременно несколько портов, если кому интересно, могу кинуть.

Кто-нибудь писал на Си клиента для работы с субд Firebird ?
Автор: WWWovan
Дата сообщения: 03.11.2005 14:29
Можно ли каким-то образом удалить из вектора обьектов std::vector один из элементов?То что я почитал насчет удаления через erase у меня реализовать не получилось...
Автор: WiseAlex
Дата сообщения: 03.11.2005 14:47
WWWovan

Цитата:
через erase у меня реализовать не получилось...

в смысле?
Автор: WWWovan
Дата сообщения: 03.11.2005 16:06
WiseAlex
Вопрос снят. Обошелся без erase. Создав промежуточный масив....
Автор: WiseAlex
Дата сообщения: 03.11.2005 16:18
WWWovan

Цитата:
. Создав промежуточный масив....

а зачем так сложно? - я так и не понял в чем проблема - erase до сегодняшнего дня работал нормально
Автор: WWWovan
Дата сообщения: 03.11.2005 16:25
WiseAlex
В "Н.Джосьютис - C++ стандартная библиотека. Для профессионалов" указано, что векторы не поддерживают прямого удаления элементов с некоторым значением. Для этой цели используеться алгоритм. Для моего случая(удалить элемент с определенным индексом) алгоритм не завелся... Хотя возможно что-то неправильно понял...
Автор: WiseAlex
Дата сообщения: 03.11.2005 16:44
WWWovan

Цитата:
удалить элемент с определенным индексом)

вектор удаляет не по индексу, а по итератору, т.е.
std::vector<SomeType> vec;
...
vec.erase(vec.begin()+index);//удаляем элемент с индексом index

Цитата:
удаления элементов с некоторым значением

для этого используют связку remove+erase
Удачи
Автор: WWWovan
Дата сообщения: 03.11.2005 17:18
WiseAlex
Спасибо. Возьму на заметку.
Автор: Zexes
Дата сообщения: 04.11.2005 01:12
Пишу курсняк в институт. Нужно написать прогу на тему "Броуновское Движение". Нужно сделать поле, в нем будут мегать точки ударяться друг об друга, об стенки и т.д.
Какой учебник мне поможет в этом деле и если можно ссылки, у самомого несколько учебников дома, но инфы по данной теме нет
Автор: Xarde
Дата сообщения: 04.11.2005 09:43
Zexes, правильно ли я понял, что тебе нужен учебник, в котором изучение С++ идёт на примере написания программы "Броуновское движение"? Лольная шутка, нечего сказать
На самом деле тебе надо:
а) разобраться с С++ вообще
б) разобраться со средой (что у тебя там, Builder или MSVC?..)
в) разобраться с отрисовкой того, что хочется нарисовать (у тебя точки; вероятнее всего просто в канве "лежать" будут)
г) разобраться с алгоритмами и их реализацией (чтобы двигать точки и определять момент их "столкновения")

Кстати, можно и не отслеживать столкновение - просто сказать, что у тебя всё строится в объёме и точки пролетают мимо друг друга
Автор: Zexes
Дата сообщения: 04.11.2005 22:37
Xarde
а) с С++ вообще разобрался
б) все делаю в mcvs 2003

C остальным вот очень и интересно разобраться.
Цитата:
разобраться с алгоритмами и их реализацией (чтобы двигать точки и определять момент их "столкновения")

вот именно это я и хочу найти, в каких учебниках есть эти алгоритмы?

Цитата:
Кстати, можно и не отслеживать столкновение - просто сказать, что у тебя всё строится в объёме и точки пролетают мимо друг друга

дык, нет, наоборот интересно подумать над столкновениями

Цитата:
Zexes, правильно ли я понял, что тебе нужен учебник, в котором изучение С++ идёт на примере написания программы "Броуновское движение"? Лольная шутка, нечего сказать

Понял не правильно, перечитал свой пост, но так и не понял, как ты пришел к такому заключению
Автор: Xarde
Дата сообщения: 05.11.2005 21:11

Цитата:
вот именно это я и хочу найти, в каких учебниках есть эти алгоритмы?

А самому слабо подумать и сделать алгоритм? Сомневаюсь, что есть такие книжки, где автор в качестве примера рассматривает именно Броуновское движение.


Цитата:
дык, нет, наоборот интересно подумать над столкновениями

Ну так и отслеживай, в чём проблема? Трудно сравнить координаты двух точек?


Цитата:
так и не понял, как ты пришел к такому заключению

Это у меня скилл такой - понимать всё по-своему Иногда помогает, а иногда и мешает
Автор: Zexes
Дата сообщения: 05.11.2005 23:34
Xarde

Цитата:
А самому слабо подумать и сделать алгоритм? Сомневаюсь, что есть такие книжки, где автор в качестве примера рассматривает именно Броуновское движение.

Хм, мне бы пока научиться делать просто двигающиеся точки, с остальным сам разберусь.
Цитата:
Ну так и отслеживай, в чём проблема? Трудно сравнить координаты двух точек?

А че такой недовольный? Тебя лично никто ничего не заставляет делать. Не хочешь - не пиши.
Автор: Xarde
Дата сообщения: 06.11.2005 09:40

Цитата:
Хм, мне бы пока научиться делать просто двигающиеся точки, с остальным сам разберусь

Тогда сделай так. Делаешь цикл на n итераций (чтобы не было бесконечности; лучше, конечно, бесконечный и засунуть его в поток, обрабатывая в главном нажатия кнопок и отрисовку). В цикле рассчитываешь новые координаты точек (чуть ниже объясню) и делаешь ProcessMessages для отрисовки. Перед циклом надо инициализировать список точек, их векторов (куда будут "лететь") и начальных координат вектора (откуда вылетает; нужно, если тебе не хочется иметь углы 45 градусов и приятнее видеть полёт под любым углом). Инициализацию нетрудно сделать используя генератор случайных чисел.

Расчёт новых координат. Берём начальную координату вектора. Смотрим, что меньше отличается от текущей координаты точки (X или Y), подставляем его в простенькую формулу получения новых координат (по пропорции ищем Y для Х+1). Стираем старую точку, рисуем новую.

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


Цитата:
А че такой недовольный?

А недовольный я потому, что человеку (тебе) думать не хотелось. Ладно, не принимай близко к сердцу. Прошу прощения, ежели мои слова задели.
Автор: sverhmonstr
Дата сообщения: 13.11.2005 19:44

Код: if ( (fp = fopen("base.txt", "r+")) == NULL)
        puts("\tNo database created yet.");
Автор: KADABRA
Дата сообщения: 13.11.2005 20:50
sverhmonstr

Цитата:
как удалить одну из структур массива из файла + сместить остальные назад?

Вручную.

Цитата:
Если файл есть, он открывается для чтения и записи. Если файла нет, он создаётся. Так должно быть, по идее. Но у меня, если файла не существует, 1)новый не создаётся 2)программа "вылетает".

В режиме "r+" файл должен существовать, и не создаётся.
(http://www.butovo.com/~zss/cpp/input.htm)
Используй режим "a", а потом fseek() для перемещения.

Добавлено:
sverhmonstr
Это на чистом С.
Можно это ещё и на С++ сделать.
Автор: sverhmonstr
Дата сообщения: 13.11.2005 22:15
KADABRA
Спасибо, с созданием разобрался. Подвела книжка, с описанием значений аргументов fopen() (
С удалением тоже разобрался, сделал, хотя, наверное, не наиболее оптимально.
Спасибо ещё раз
Автор: WWWovan
Дата сообщения: 14.11.2005 12:25
Подскажите пожалуйста где почитать на русском о TPaintBox?
Заранее благодарен.

Страницы: 12345678910111213141516171819202122

Предыдущая тема: DELPHI. Счетчик ячеек со значенями, значений ячеек


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.