Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.97/32: Рейтинг темы: голосов - 32, средняя оценка - 4.97
0 / 0 / 0
Регистрация: 14.11.2010
Сообщений: 13

Ищу начинающих программистов!

13.07.2011, 16:02. Показов 7378. Ответов 49
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ищу начинающих или продвинутых программистов на C++,C,Objective-C,C# для общения и обмена опытом!
Недавно таким образом учился знакомый говорит очень помогло. Поэтому кто готов к обмену опытом и к взаимопомощи. Пишите email в личку или прям сюда. Желательно что бы был GMAIL.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.07.2011, 16:02
Ответы с готовыми решениями:

Ищу таких же начинающих программистов, как я
Здравствуйте, я ищу таких же начинающих программистов на c++. Чтобы вместе с ними создать беседу в вк. Цель этой беседы - это найти таких...

Ищу программистов, можно начинающих для настройки и интеграции crm битрикс 24
Обучение предоставляется онлайн, нужно пройти обучение и сдать экзамен, успешно сдавшим экзамен, есть возможность трудоустроиться...

Ищу программистов Cocos2d-x для разработки игр, Ищу программистов C++
Привет всем. Ищу разработчиков С++ для мобильной игры (iOS, Android и WP в перспективе). Используемый движок - Cocos2d-x. Сейчас в...

49
 Аватар для OstapBender
594 / 532 / 76
Регистрация: 22.03.2011
Сообщений: 1,585
14.07.2011, 00:08
Студворк — интернет-сервис помощи студентам
я написал решение задачи kravam-а, но оно такое быдло, что даже стыдно показывать(
я формулу не высчитывал .
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,709
14.07.2011, 00:10
Просьба: проверить самому (кто сказал что алгоритм единственный?) и сократить код до минимума. Я завтра посмотрю.
Кстати, мой код такой: (псевдокод)

C++
1
2
3
4
5
6
7
8
9
10
 struct koordinati_ {
  int nomer_stroki;
  int nomer_stolbtsa;
 } koordinati;
 
 
void matrix<T>::f_perevod_koordinat (koordinati_* koordinati, int y, int x) {
 //Так, тут в одном операторе присваивания умещается нахождение строки
 //А во втором операторе присваивания умещается нахождение столбца 
};
...Так что в любом случае есть куда стремиться.

Добавлено через 48 секунд
OstapBender, окультуривай и показывай
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
14.07.2011, 00:12
интересно посмотреть на то, что подразумеваеться под диагональю прямоугольной матрицы
1
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,709
14.07.2011, 00:15
Читать умеешь? Блин специально для тех кто не умеет читать:
1 2 3 4 5
0 2 3 4 5
3 4 5 6 7
7 8 9 0 5
2 3 4 4 6
5 6 7 8 9
2 3 4 5 6
4 5 6 7 8

Итак, для ДАННОЙ задачи диагонали такие будут (начиная с нулевой)
1
0 2
3 2 3
7 4 3 4
2 8 5 4 5
5 3 9 6 5
2 6 4 0 7
4 3 7 4 5
5 4 8 6
6 5 9
7 6
8
0
 Аватар для OstapBender
594 / 532 / 76
Регистрация: 22.03.2011
Сообщений: 1,585
14.07.2011, 00:19
лень мне переделывать )
логика проста, ищем лежит X(номер диагонали) на нижней строке, или на правом столбце, ставим туда позицию curr , движемся вверх влево пока не дошли до Y
код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
struct coords {
    int i; // строка
    int j; // столбец
};
 
coords at(coords diag, int n, int m) {
    
    if (diag.i<0 || diag.i>n+m-2) throw std::exception("Bad coordinates.");
 
    coords curr;
    if (diag.i >=0 && diag.i <m) {
        curr.i=n-1;
        curr.j=diag.i;
    }
    else {
        curr.j=m-1;
        curr.i=n+m-diag.i-2;
    }
 
    while (diag.j>0) {
        curr.i--;
        curr.j--;
        if (curr.i<0 || curr.j<0) throw std::exception("Bad coordinates.");
        diag.j--; // use diag.j as counter
    }
 
    return curr;
}
 
 
 
int main()
{
    int n=3, m=3;
    coords diag = {4,1};
    coords normal;
    try {
    normal = at(diag,n,m);
    } catch (std::exception& e) {
        std::cout << e.what() << '\n';
        getchar();
        return 1;
    }
 
    std::cout << normal.i << ' ' << normal.j << '\n';
 
    getchar();
}
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,709
14.07.2011, 00:22
Не проверял, но даже если верно- за труды тройка.
Придумайте формулку, ребята...
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
14.07.2011, 01:58
проверил на прямоугольной, работает, но для "вертикальных" матриц - M >= N
Код
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <stdio.h>
 
#define M 9
#define N 5
 
void TranslateCoordForVertMatrix(int* x, int* y)
{
    if (*x <= M - 1)
    {
        *x -= *y;
    }
    else
    {
        *y = *x - M + 1 + *y;
        *x -= *y;
    }
}
 
int main()
{
    int x = 11, 
        y = 1;
    TranslateCoord(&x, &y);
    printf("i = %d\nj = %d", x, y);
    getchar();
    return 0;
}
/*пронумерованы диагонали
   0-- * * * * 3 
   1-- * * * 3 2 
   2-- * * 3 2 1 
   3-- * 3 2 1 0 
   4-- 3 2 1 0 4 
   5-- 2 9 0 4 *
   6-- 1 0 4 * *
   7-- 0 4 * * *
   8-- 4 * * * *
         | | | |
         9 | | |
          10 | |
            11 |
              12
*/
1
53 / 53 / 2
Регистрация: 06.04.2011
Сообщений: 209
14.07.2011, 08:44
kravam,
Задача: имеется матрица размером M строк на N столбцов. Каждая диагональ имеет свой номер, нумерация диагоналей начинается с нуля. Диагонали идут снизу вверх слева направо. Элементы диагоналей нумеруются с нуля.
В приведённом тобой примере диагонали идут сверху вниз.

Добавлено через 1 минуту
Или я туплю и не правильно понял условие.
0
3061 / 1465 / 265
Регистрация: 16.03.2008
Сообщений: 6,512
Записей в блоге: 2
14.07.2011, 08:47
C++
1
2
i = (x<=M) ? x-y : M-y;
j = (x<=M) ? y : (x-M) + y;

0
53 / 53 / 2
Регистрация: 06.04.2011
Сообщений: 209
14.07.2011, 08:58
Возможно такое решение верно.
C
1
2
3
4
5
6
7
8
9
10
if (x <= M - 1)
{
    i = x - y;
    j = y;
}
else
{
    i = M - 1 - y;
    j = x - M + 1 + y;
}
0
3061 / 1465 / 265
Регистрация: 16.03.2008
Сообщений: 6,512
Записей в блоге: 2
14.07.2011, 09:15
упс. Поспешил. Вместо M должно быть M-1 вроде
0
14.07.2011, 09:21

Не по теме:

Цитата Сообщение от Mazanakisicq Посмотреть сообщение
Пишите email в личку или прям сюда.
Человек адреса почтовые собирает (может для спама, может для регистрации где-нибудь), а вы тут что устроили? Матрицы, диагонали... Офтоп сплошной!
:)

0
3061 / 1465 / 265
Регистрация: 16.03.2008
Сообщений: 6,512
Записей в блоге: 2
14.07.2011, 11:17
вот с проверкой
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#include <stdio.h>
#define M1 3
#define N1 5
#define M2 5
#define N2 3
int A1[M1][N1]=
    {
        {0,1,2,3,4},
        {1,2,3,4,5},
        {2,3,4,5,6}
    };
int A2[M2][N2]=
    {
        {0,1,2},
        {1,2,3},
        {2,3,4},
        {3,4,5},
        {4,5,6}
    };
typedef struct
{
    int i;
    int j;
} coord;
 
coord getElement(int x, int y, int rows)
{
    coord res;
    res.i = (x<rows) ? x-y : rows-1-y;
    res.j = (x<rows) ? y : (x-rows+1) + y;
    return res;
}
int main()
{
    coord co;
    int i,j,k;
    for (i=0;i<M1+N1-1;++i)
    {
        if (i<M1)
        {
            for (j=0;(j<=i)&&(j<N2);++j)
            {
                co=getElement(i,j,M1);
                printf("%d ",A1[co.i][co.j]);
            }
        }
        else
        {
            k=N1+M1-i-1;
            if (k>M1) k=M1;
            for (j=0;j< k ;++j)
            {
                co=getElement(i,j,M1);
                printf("%d ",A1[co.i][co.j]);
            };
        }
        printf("\n");
    }
    printf("\n");
    for (i=0;i<M2+N2-1;++i)
    {
        if (i<M2)
        {
            k=i;
            for (j=0;(j<=i)&&(j<N2);++j)
            {
                co=getElement(i,j,M2);
                printf("%d ",A2[co.i][co.j]);
            }
        }
        else
        {
            k=N2+M2-i-1;
            if (k>M2) k=M2;
            for (j=0;j < k ;++j)
            {
                co=getElement(i,j,M2);
                printf("%d ",A2[co.i][co.j]);
            };
        }
        printf("\n");
    }
 
    return 0;
}
Добавлено через 21 минуту
Хех. Видимо ни когда не приходилось мне сталкиваться. Только, что осознал, что у меня с ходу не получается сделать функцию принимающую в качестве аргумента массив (или указатель на таковой). С учетом того, что массивы можгут быть разной заданной размерности.
(Вот как в моем коде выше. По идее вывод диагоналей просится в процедуру - код то один и тот же)
Но вот как?
0
Эксперт С++
 Аватар для nameless
342 / 306 / 36
Регистрация: 16.06.2009
Сообщений: 486
14.07.2011, 11:31
Цитата Сообщение от voral Посмотреть сообщение
Хех. Видимо ни когда не приходилось мне сталкиваться. Только, что осознал, что у меня с ходу не получается сделать функцию принимающую в качестве аргумента массив (или указатель на таковой). С учетом того, что массивы можгут быть разной заданной размерности.
(Вот как в моем коде выше. По идее вывод диагоналей просится в процедуру - код то один и тот же)
Но вот как?
Не понял, Вы не знаете как создать функцию, в которую, в качестве параметра, передавался бы массив?
Ну как нибудь так:
C
1
2
3
4
5
6
7
8
void PrintDiag(int* arr, int N, int M)
{
   for (size_t i = 0; i < N; i++)
      for (size_t j = 0; j < N; j++)
         printf("%d", *(arr + (i * N + j)); // выводите, то что Вам нужно..
}
 
PrintDiag(&A[0][0], N, M);
1
3061 / 1465 / 265
Регистрация: 16.03.2008
Сообщений: 6,512
Записей в блоге: 2
14.07.2011, 12:34
нет я не осознал что передавать надо &A[0][0]. Пытался через &A сделать
0
Заблокирован
14.07.2011, 12:43
Цитата Сообщение от voral Посмотреть сообщение
нет я не осознал что передавать надо &A[0][0]
не надо
Цитата Сообщение от voral Посмотреть сообщение
Пытался через &A сделать
покажи пример где ты пытался, я исправлю как надо

Добавлено через 4 минуты
PrintDiag(&A[0][0], N, M);
эквивалентно
PrintDiag(A[0], N, M);

Добавлено через 50 секунд
смысла нет сначала разыменовывать, а потом брать адресс. Масло маслянное
0
 Аватар для OstapBender
594 / 532 / 76
Регистрация: 22.03.2011
Сообщений: 1,585
14.07.2011, 12:56
Цитата Сообщение от CAHTEXHUK Посмотреть сообщение
смысла нет сначала разыменовывать, а потом брать адресс. Масло маслянное
нет смысла писать this-> в методах, однако пишут.
так понятнее.
0
3061 / 1465 / 265
Регистрация: 16.03.2008
Сообщений: 6,512
Записей в блоге: 2
14.07.2011, 12:58
Цитата Сообщение от CAHTEXHUK Посмотреть сообщение
покажи пример где ты пытался, я исправлю как надо
В общемто я и сам осознал. Вот примерно так я пытался сделать
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <stdio.h>
#define M1 3
#define N1 5
#define M2 5
#define N2 3
int A1[M1][N1]=
    {
        {0,1,2,3,4},
        {1,2,3,4,5},
        {2,3,4,5,6}
    };
int A2[M2][N2]=
    {
        {0,1,2},
        {1,2,3},
        {2,3,4},
        {3,4,5},
        {4,5,6}
    };
void PrintDiag(int** arr, int N, int M)
{
    int i,j;
   for (i = 0; i < N; i++)
      for ( j = 0; j < N; j++)
         printf("%d ", *(arr + (i * N + j))); // выводите, то что Вам нужно..
}
 
int main()
{
    PrintDiag(A1, M1,N1);
    PrintDiag(&A2, M2,N2);
    return 0;
}
В результате имеем:
Bash
1
2
3
4
5
6
test4.c: In function ‘main’:
test4.c:33: warning: passing argument 1 of ‘PrintDiag’ from incompatible pointer type
test4.c:20: note: expected ‘int **’ but argument is of type ‘int (*)[5]’
test4.c:34: warning: passing argument 1 of ‘PrintDiag’ from incompatible pointer type
test4.c:20: note: expected ‘int **’ but argument is of type ‘int (*)[5][3]’
0 2 4 2 4 2 4 6 0 0 2 2 2 4 4 4 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Пытался решить при помощи количества звездочек в объявлении функции
0
Эксперт С++
 Аватар для Maxim Prishchepa
1936 / 1048 / 109
Регистрация: 29.03.2010
Сообщений: 3,167
14.07.2011, 13:01
эм... а не проще ли
C++
1
PrintDiag(A, N, M);
? или может я чего-то не понимаю в этой жизни...
0
 Аватар для OstapBender
594 / 532 / 76
Регистрация: 22.03.2011
Сообщений: 1,585
14.07.2011, 13:03
voral, массивы сделай динамическими и этот вариант заработает, и никаких смещений выщитывать не нужно, оператор [] перегружен уже
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.07.2011, 13:03

Ищу программистов
Ищу программистов, чтобы соеденится и сформировать команду хакеров.

Ищу программистов
Всем Доброго времени суток! Столкнулась с такой же проблемой. Ищу программистов, но действительно толковых людей очень мало. Сайты поиска...

Ищу программистов добровольцев
не нашел подходящего раздела, поэтому создал тут. --------------------------------------------------------- нужны программисты в...

Ищу программистов (Блокчейн)
Ищу программистов для написание ядра (Блокчейн- аналог,Графена,Этериума и др). На данный момент есть несколько вакансий для тех кто хочет...

Ищу программистов,разработчиков
Доброго времени суток, приглашаю к совместной работе над интересным онлайн проектом разработчиков игр, программистов, дизайнеров и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Закрытая тема Создать тему
Новые блоги и статьи
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru