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

» Вопросы по программированию на C/С++

Автор: TargeTSan
Дата сообщения: 12.11.2008 17:11
ksodi
Нужно написать свой предикат сортировки, который указывает, что элемент такой-то должен быть раньше элемента такого-то.
Выйдет примерно следующее
[more]

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

template<typename T>
class vector_compare
{
public:
vector_compare(size_t field): _field(field) { }
bool operator () (const std::vector<T>& first, const std::vector<T>& second) const
{
// один из векторов слишком короткий, применяем стандартную процедуру
if (first.size() <= _field || second.size() <= _field)
return first < second;
// иначе сортируем по столбцу
return first[_field] < second[_field];
}
protected:
size_t _field;
};

int main(int argc, char** argv)
{
std::vector< std::vector<int> > ints; // Вектор векторов
size_t column; // Столбец для сортировки

// Инициализация вектора векторов и номера столбца: вставить здесь

// сортировка
std::sort(ints.begin(), ints.end(), vector_compare<int>(column));
return 0;
}
Автор: lichnosti
Дата сообщения: 12.11.2008 21:23

Цитата:
Лови вариант решения
инит матрицы можно переделать по вкусу, размеры передаются в командной строке

Подробнее...

НЕ работает прога....и єто точно она
Автор: akaGM
Дата сообщения: 12.11.2008 21:33
TargeTSan

Цитата:
Для растровых шрифтов работать, скорее всего, не будет (там одна кодовая таблица, CP866).

тут ты прав, если мы заранее не создали "terminal" (например, .fon) c 1251-"дальними аски"...
Автор: lichnosti
Дата сообщения: 12.11.2008 23:00

Цитата:
Цитата:Лови вариант решения
инит матрицы можно переделать по вкусу, размеры передаются в командной строке

Подробнее...


НЕ работает прога....и єто точно она



Где Что??
Автор: TargeTSan
Дата сообщения: 13.11.2008 10:55
lichnosti

Цитата:


Цитата:

Цитата: Лови вариант решения
инит матрицы можно переделать по вкусу, размеры передаются в командной строке

Подробнее...

НЕ работает прога....и єто точно она
Автор: timlsscott
Дата сообщения: 13.11.2008 13:26
Помогите программу написать. 1. Дана квадратная матрица A порядка n. Получить матрицу A+A2.

Условия програмы:
1. Все используемые массивы должны быть реализованы как динамические структуры.
2. Доступ к элементам массива должен осуществляться через указатели.
3. Массив заполняется пользователем с клавиатуры.
4. Каждый логически законченный фрагмент должен быть оформлен в виде отдельной функции. Все необходимые данные для функции должны передаваться в качестве параметров.
Часть 2
5. Реализовать возможность считывания (записи) исходных данных из файла (в файл).
6. Имя файла должно запрашиваться у пользователя.
7. Программа, исходя из содержимого файла, должна выдавать сообщение об ошибке в случае, если данные не удовлетворяют условиям задачи.


Автор: lichnosti
Дата сообщения: 13.11.2008 13:29

Цитата:
lichnosti

Цитата:

Цитата:

Цитата:Лови вариант решения
инит матрицы можно переделать по вкусу, размеры передаются в командной строке

Подробнее...



НЕ работает прога....и єто точно она



Где Что??


Если не трудно, объясни понятней в чём проблема. А то как-то сумбурно у тебя ответ получился.
Кстати о птичках: прогу вчера собрал на MSVC'2008 и запустил, работает отлично
Если не собирается - пришли лист ошибок компилятора
Если не стартует или вылетает - пришли текст в окне ошибки




Програма запускаеться...но почему в ней нельзя нечего написать???
Автор: TeXpert
Дата сообщения: 13.11.2008 18:51
Ребята, вы что-то топик превратили в решалку задач по матрицам. По задачам вроде отдельный топик есть?
Автор: Infinite Retrieval
Дата сообщения: 13.11.2008 23:44

Код:
#include <stdio.h>
#include <conio.h>

long xy(int z)

{
    long yx=1;
    int l=0; while(l<z)
    { l++; yx= yx*10; }
    return yx;
}

int lenth(long b)
{
    int len=0;
    float k=b;
    while (k>1)
    {
        k/=10;
        len++;
    }
    return len;
}

int numintomass (int s)
{
    int lenth();
    long xy();
    int g[200];
    for (int p=0; p<lenth(s); p++)
    {
        g[p]= s/xy(p) - s/xy(p+1)*10;
    }
    for (int p=0; p<lenth(s); p++)
    {
        g[p]= g[lenth(s)-1-p];
    }
    return g[]
}

int binintoten (g[])
{
    lenth();
    for(int y,dec=o; y<lenth(s); y++)
    {
        dec=dec*2+g[y];
    }
}



int main()
{
    binintoten();
    numintomass();
    int s,q;
    printf("Enter the binary number\n");
    scanf("%i",&s);
    q=binintoten(numintomass(s));
    printf("%i", q);

    
getch();
    return 0;
}

Автор: ItsJustMe
Дата сообщения: 13.11.2008 23:53
что за гениальные объявления int length(); long xy(); length(); binintoten(); и т.д.? Ну, а warning есть warning.
И вместо (g[]) напиши (int *g).
Автор: Skyer1
Дата сообщения: 15.11.2008 16:15
Помогите кто нибудь с задачей буду очень благодарен

Создать класс типа – объект-вектор. Поля – координаты концов в двумерном пространстве. Класс имеет конструктор. Методы устанавливают поля и возвращают значения полей; вычисляют длину вектора; метод печати. Методы установки полей класса должны проверять корректность задаваемых параметров. Обеспечить операции сложения и вычитания векторов с получением нового вектора (суммы или разности). Проверить работу этого класса.

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

Создать класс типа – объект-вектор. Поля – координаты концов в двумерном пространстве. Класс имеет конструктор. Методы устанавливают поля и возвращают значения полей; вычисляют длину вектора; метод печати. Методы установки полей класса должны проверять корректность задаваемых параметров. Обеспечить операции сложения и вычитания векторов с получением нового вектора (суммы или разности). Проверить работу этого класса.
Автор: Alph
Дата сообщения: 16.11.2008 14:58
Подскажите кто знает, пожалуйста, как "напрямую" работать с флоппи? Есть необходимость написать софт для станка, а он принимает только дискеты 720кб (форматирую на компе), причем зараза пишет на них минуя файловую систему. Т.е. делит диск на 4 равных части и рисует туда 4 программы. При просмотре дискеты на компе - она пустая, но при просмотре ее побайтно - информация обнаруживается. Может даст кто ссылку на библиотеку по работе с флоппиком, если есть таковая? Или может посоветуете как писать/читать побайтно дискетку из под С++?
Автор: ItsJustMe
Дата сообщения: 16.11.2008 19:59
MSDN тебе в помощь. Ключевые слова CreateFile и DeviceIoControl.
Автор: BrdGuest
Дата сообщения: 16.11.2008 20:06
Skyer1
См. include/vector

-----
Прочёл по диагонали. Извините...
Автор: Skyer1
Дата сообщения: 17.11.2008 03:20
Это где?
Автор: BrdGuest
Дата сообщения: 17.11.2008 18:20
Skyer1
В папке с твоим компилятором
Автор: distance
Дата сообщения: 18.11.2008 09:46
BrdGuest
См. include/vector
Там находится совсем не то, что хотел Skyer1

Skyer1: Твоё задание подразумевает написание много простого кода.
Можно взять за основу например этот вариант: 2D Vector C++ Class
Автор: TargeTSan
Дата сообщения: 19.11.2008 18:33
TeXpert
Наверное, в разделе "Задачи на С++" уже никто не хочет решать задачи из учебников
Автор: Travolta25
Дата сообщения: 27.11.2008 11:08
День добрый.
Мне надо сравнить заданную зону(область) рабочего стола попиксельно с
указанным *.bmp файлом.
Опишите пожалуйста алгоритм при котором можно произвести эту процедуру.
Желатьно с использованием ключевых операторов.
Спасибо.
Автор: TeXpert
Дата сообщения: 27.11.2008 13:25
Такого
Цитата:
алгоритм при котором можно произвести эту процедуру

Цитата:
Желатьно с использованием ключевых операторов
не бывает. Собственно, какой тут алгоритм? Тебе надо в раздел задач
Автор: distance
Дата сообщения: 27.11.2008 17:15
Travolta25

1. захватить рабочий стол в bmp (тема обсосана со всех сторон, ищи в гугле)
2. если не совпадает глубина цвета у захваченного и исходного bmp, то осуществить преобразование (может быть жопа, если используется палитровый bmp (8 бит на пиксел); для остальных цветовых схем RGB, BGR, 15/16/24/32бит на пиксел ищем алгоритмы в гугле)
3. пишем функцию для навигации по произвольному Rect'у внутри bmp (структура хранения данных в bmp простая и линейная, подробности ищем в гугле)
4. с учётом п.3 пишем функцию сравнения исходного bmp и захваченного при указанном Rect'е.

Что такое "ключевые операторы" я не знаю, поэтому вот примерно так.
Автор: lichnosti
Дата сообщения: 28.11.2008 17:50
ПОМОГИТЕ МНЕ
Строки. Функции работы со строками

Задание:
Написать программу, что считает количество слов в строке, введенной из клавиатуры
Автор: ItsJustMe
Дата сообщения: 29.11.2008 01:40
lichnosti, не парьтесь. Используйте Microsoft Word (или, если хотите быть законопослушными, OpenOffice Writer). Он и количество слов посчитает, и количество символов, и еще много чего посчитает Поможет не только тебе, но и всем вам, сколько бы вас ни было.
Автор: akaGM
Дата сообщения: 29.11.2008 16:17
ItsJustMe
+1!
суров, но справедлив...

lichnosti
шёл/шли бы ты/вы в задачи по С
Автор: Alexandrini
Дата сообщения: 02.12.2008 13:37
Помогите, пожалуйста. Такая программа: Разработать программу вычисления разности между двумя заданными датами. Каждая да-та должна быть задана в формате MMDD[CC]YY, где MM фиксирует номер месяца года в диапазоне от 1 до 12, DD соответствует числу месяца в диапазоне от 1 до 31, CC обозна-чает две первые необязательные цифры, а YY - две последние цифры, идентифицирующие год. Обе даты, разность которых нужно вычислить, должны передаваться программе через аргументы командной строки ее вызова. Результат вычисления разности дат должен отображаться в потоке стандартного вывода (stdout) числом полных лет и дней между ними по календарю.(язык С)
Вот сам текст программы:
#include <stdio.h>
#include <time.h>
#include <string.h>
#include <stdlib.h>
#include <memory.h>

void init(char *, struct tm *);
void errormes(int);
int diffabs(int, int);

int main(int argc, char *argv[])
{
struct tm date1, date2, *diffdate;
time_t time1, time2, dtime;
int len;

if (argc != 3) errormes(1);
len = strlen(argv[1]);
if (len != 6 && len != 8) errormes(1);
len = strlen(argv[2]);
if (len != 6 && len != 8) errormes(1);
init(argv[1], &date1);
init(argv[2], &date2);
if (diffabs(date1.tm_year, date2.tm_year) > 68) errormes(2);
time1 = mktime(&date1);
time2 = mktime(&date2);
if (time1 > time2)
dtime = difftime(time1, time2);
else
dtime = difftime(time2, time1);
diffdate = localtime(&dtime);
fprintf(stdout, "\Разность дат: %d &#227;. %d &#228;&#237;.\n\n",
diffabs(diffdate->tm_year, 70), diffdate->tm_yday);
return 0;
}

void init(char *pstr, struct tm *date)
{
char buf[5];
int i=0;
while(isdigit(pstr[i]))
i++;
if(i!=strlen(pstr)) errormes(1);
memset(date, 0, sizeof(struct tm));
strncpy(buf, pstr, 2);
buf[2] = '\0';
date->tm_mon = atoi(buf) - 1;

if (date->tm_mon < 0 || date->tm_mon > 11) errormes(3);
strncpy(buf, pstr + 2, 2);
buf[2] = '\0';
date->tm_mday = atoi(buf);

if (date->tm_mday < 1 || date->tm_mday > 31) errormes(3);
if (strlen(pstr) == 6)
{
strcpy(buf, "20");
strcat(buf, pstr + 4);
}
else
strcpy(buf, pstr + 4);



if (date->tm_mon==1)
{
if(date->tm_year % 4 == 0 && date->tm_year % 100 != 0 || date->tm_year % 400 == 0)
{if(date->tm_mday < 1 ||date->tm_mday > 29)
{errormes(3);}
else{ if(date->tm_mday < 1 ||date->tm_mday > 28)
errormes(3);}}
}
date->tm_year = atoi(buf) - 1900;
if (date->tm_year < 2 || date->tm_year > 138) errormes(3);
return;
}

int diffabs(int a, int b)
{
if (a > b) return a - b;
return b - a;
}


void errormes(int code)
{
if (code == 1)
fprintf(stderr, "\n&#205;&#229;&#234;&#238;&#240;&#240;&#229;&#234;&#242;&#237;&#251;&#229; &#224;&#240;&#227;&#243;&#236;&#229;&#237;&#242;&#251;.\n");
if (code == 2)
fprintf(stderr, "\n&#207;&#229;&#240;&#229;&#239;&#238;&#235;&#237;&#229;&#237;&#232;&#229; &#242;&#232;&#239;&#224;. &#208;&#224;&#231;&#237;&#238;&#241;&#242;&#252; &#228;&#224;&#242; &#237;&#229; &#228;&#238;&#235;&#230;&#237;&#224; &#239;&#240;&#229;&#226;&#251;&#248;&#224;&#242;&#252; 68 &#235;&#229;&#242;.\n");
if (code == 3)
fprintf(stderr, "\n&#205;&#229;&#226;&#229;&#240;&#237;&#251;&#233; &#244;&#238;&#240;&#236;&#224;&#242; &#228;&#224;&#242;&#251;.\n");
fprintf(stderr, "&#205;&#229;&#238;&#225;&#245;&#238;&#228;&#232;&#236;&#238; &#231;&#224;&#228;&#224;&#242;&#252; &#228;&#226;&#224; &#239;&#224;&#240;&#224;&#236;&#229;&#242;&#240;&#224; &#226;&#232;&#228;&#224;\n\n\tMMDD[CC]YY\n\t"
"MM - &#237;&#238;&#236;&#229;&#240; &#236;&#229;&#241;&#255;&#246;&#224; &#238;&#242; 01 &#228;&#238; 12\n\t"
"DD - &#228;&#229;&#237;&#252; &#236;&#229;&#241;&#255;&#246;&#224; &#238;&#242; 01 &#228;&#238; 31\n\t"
"[CC]YY - &#227;&#238;&#228; &#238;&#242; 1970 &#228;&#238; 2037, &#227;&#228;&#229; &#239;&#229;&#240;&#226;&#251;&#229; &#228;&#226;&#229; &#246;&#232;&#244;&#240;&#251; &#237;&#229;&#238;&#225;&#255;&#231;&#224;&#242;&#229;&#235;&#252;&#237;&#251;\n\n"
"&#205;&#224;&#239;&#240;&#232;&#236;&#229;&#240;: 02181990\n\n");
exit(-1);
return;
}

Она рабочая, но сюда надо включить такую проверку, что, если месяц-февраль, то в високосном году - 29 дней в феврале, а если год обычный, то 28. В тексте есть такая проверка, но программа не определяет високосный год. Всегда учитывается, что в феврале 28 дней.
Помогите, пожалуйста.
Автор: sadasaf
Дата сообщения: 03.12.2008 01:49
Кто программирует на C++ Builder, подскажите такую вещь:
в проге требуется открывать картинку через Image->Picture->LoadFromFile("c:\.....");
Как сделать, чтобы предварительно проверялось наличие этого файла?
Автор: dddasd
Дата сообщения: 03.12.2008 05:09
sadasaf, смотри FileExists()...
Автор: sadasaf
Дата сообщения: 04.12.2008 02:05
Может кто-нить подскажет готовую и быструю либу/набор классов для операций с числами большой точности? (сотни знаков после запятой, а может быть и тысячи)
Автор: sadasaf
Дата сообщения: 04.12.2008 22:32
При попытке собрать компилятор выводит ошибку "error C2061: syntax error : identifier 'cout' ".

Исходник:
#include "iostream"
// Заглавочный файл заключён в ковычки потому что иначе не прёт (Не рискну объяснять почему, так как сам не знаю...), а без раcширения так как в папке include заглавочные файлы лежат в виде бинарников.

using namespace std;
// Этой строки там нет. Она добавленна дабы определить глобальую одлать дейсвия identifier (нелады с переводом).

class Count
{
public:
int x;
void print ( cout << x << endl );
};

void main ()
{
Count counter,
*counterPtr = &counter,
&counterRef = counter;

cout << "Prisvaevanie X znachenie 7 i pechat po imeni obekta: ";
counter.x = 7;
counter.print();

cout << "Prisvaevanie X znachenie 8 i pechat po imeni ssilke: ";
counterRef.x = 8;
counterRef.print();

cout << "Prisvaevanie X znachenie 9 i pechat po ukazatelu: ";
counterPtr->x = 10;
counterPtr->print();
}

Короче как исправить чтоб прога компилировалсь в Visual C++ 2005 мелкомягких?
Автор: BornLeader
Дата сообщения: 05.12.2008 12:26
#include "iostream"
using namespace std;

class Count
{
public:
int x;
friend ostream& operator<<(ostream& os,const Count& count)
{
return os << count.x << endl;
}
};

void main ()
{
Count counter,
*counterPtr = &counter,
&counterRef = counter;

cout << "Prisvaevanie X znachenie 7 i pechat po imeni obekta: ";
counter.x = 7;
cout << counter;

cout << "Prisvaevanie X znachenie 8 i pechat po imeni ssilke: ";
counterRef.x = 8;
cout << counterRef;

cout << "Prisvaevanie X znachenie 9 i pechat po ukazatelu: ";
counterPtr->x = 10;
cout << counterPtr;
}

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193

Предыдущая тема: не знаю как назвать тему :-)


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