Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 28, средняя оценка - 4.82
Mazanakisicq
0 / 0 / 0
Регистрация: 14.11.2010
Сообщений: 13
#1

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

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

Ищу начинающих или продвинутых программистов на C++,C,Objective-C,C# для общения и обмена опытом!
Недавно таким образом учился знакомый говорит очень помогло. Поэтому кто готов к обмену опытом и к взаимопомощи. Пишите email в личку или прям сюда. Желательно что бы был GMAIL.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.07.2011, 16:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ищу начинающих программистов! (C++):

С++ для начинающих - C++
не могу сгенерировать случайные целые числа. всегда одно и тоже значение выходит. при чем эта функция должна быть не в main и количество...

С++ для начинающих - C++
Пожалуйста помогите решить задачу С++ с помощью функций:Составить программу, сравнивающую два числа, введенных римскими цифрами.

С/С++ для начинающих - C++
Вводится последовательность целых чисел, 0 – конец последовательности. Вычислить количество положительных чисел, кратных 7 и не кратных 5 и...

3D программирования для начинающих - C++
Добрый вечер всем!Я хочу начать учить 3D программирования, но не знаю с чего начать. Возможно кто-то бы посоветовал с чего начать, какую...

Задачник для начинающих - C++
Посоветуйте хороший задачник по С++.

Литература для начинающих - C++
всех с НГ!))) посоветуйте что почитать человеку который с программированием на Вы а в частности по С++...

49
voral
463 / 444 / 73
Регистрация: 16.03.2008
Сообщений: 2,151
14.07.2011, 09:15 #31
упс. Поспешил. Вместо M должно быть M-1 вроде
0
easybudda
14.07.2011, 09:21
  #32

Не по теме:

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

0
voral
463 / 444 / 73
Регистрация: 16.03.2008
Сообщений: 2,151
14.07.2011, 11:17 #33
вот с проверкой
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
Эксперт С++
334 / 298 / 14
Регистрация: 16.06.2009
Сообщений: 486
14.07.2011, 11:31 #34
Цитата Сообщение от 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
voral
463 / 444 / 73
Регистрация: 16.03.2008
Сообщений: 2,151
14.07.2011, 12:34 #35
нет я не осознал что передавать надо &A[0][0]. Пытался через &A сделать
0
CAHTEXHUK
Заблокирован
14.07.2011, 12:43 #36
Цитата Сообщение от voral Посмотреть сообщение
нет я не осознал что передавать надо &A[0][0]
не надо
Цитата Сообщение от voral Посмотреть сообщение
Пытался через &A сделать
покажи пример где ты пытался, я исправлю как надо

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

Добавлено через 50 секунд
смысла нет сначала разыменовывать, а потом брать адресс. Масло маслянное
0
OstapBender
584 / 523 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
14.07.2011, 12:56 #37
Цитата Сообщение от CAHTEXHUK Посмотреть сообщение
смысла нет сначала разыменовывать, а потом брать адресс. Масло маслянное
нет смысла писать this-> в методах, однако пишут.
так понятнее.
0
voral
463 / 444 / 73
Регистрация: 16.03.2008
Сообщений: 2,151
14.07.2011, 12:58 #38
Цитата Сообщение от 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
Эксперт С++
1922 / 1034 / 74
Регистрация: 29.03.2010
Сообщений: 3,167
14.07.2011, 13:01 #39
эм... а не проще ли
C++
1
PrintDiag(A, N, M);
? или может я чего-то не понимаю в этой жизни...
0
OstapBender
584 / 523 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
14.07.2011, 13:03 #40
voral, массивы сделай динамическими и этот вариант заработает, и никаких смещений выщитывать не нужно, оператор [] перегружен уже
0
CAHTEXHUK
Заблокирован
14.07.2011, 13:07 #41
Цитата Сообщение от OstapBender Посмотреть сообщение
нет смысла писать this-> в методах, однако пишут.
про this не в тему. Мой вариант всяко понятнее. Любой кто увидит это
Цитата Сообщение от voral Посмотреть сообщение
&A[0][0]
сразу поймёт что человек не понимает что он делает

Добавлено через 1 минуту
Цитата Сообщение от l_a_m Посмотреть сообщение
эм... а не проще ли
А имеет **инт, в данном примере его подставить нельзя. Получается функция выводит строки матрицы. Конечно проще сделать функцию которая получает матрицу и выводит её, тогда Можно было подставить А

Добавлено через 1 минуту
это относится про PrintDiag в посте #34
0
OstapBender
584 / 523 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
14.07.2011, 13:08 #42
CAHTEXHUK, зря вы так говорите. я лично пишу всегда &a[0][0] и при этом прекрасно понимаю, что я передаю адрес 0-го элемента -0ой строки, то есть адрес первого элемента матрицы, то есть простой указатель.
когда пишешь a[0] то передаешь как-будто строку в функцию, и может создастся впечатление что работа будет со строкой. я пишу так когда нужно построчно работать.
C
1
2
3
int a[4][4];
for (int i=0; I,4; i++)
func(a[i],4); // в данном случае писать &a[i][0] реально тупо
это всё равно что спорить, что круче (!p) или (p==0)
0
Maxim Prishchepa
Эксперт С++
1922 / 1034 / 74
Регистрация: 29.03.2010
Сообщений: 3,167
14.07.2011, 13:09 #43
Цитата Сообщение от CAHTEXHUK Посмотреть сообщение
А имеет **инт, в да.....
пардон, не заметил хотя указатель на указатель - это что-то из области буддизма
0
voral
463 / 444 / 73
Регистрация: 16.03.2008
Сообщений: 2,151
14.07.2011, 13:14 #44
Цитата Сообщение от l_a_m Посмотреть сообщение




? или может я чего-то не понимаю в этой жизни...
C++
1
2
3
4
5
6
7
8
9
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))); // выводите, то что Вам нужно..
}
....
   PrintDiag(A1, M1,N1);
Bash
1
2
3
test3.c: In function ‘main’:
test3.c:30: warning: passing argument 1 of ‘PrintDiag’ from incompatible pointer type
test3.c:20: note: expected ‘int *’ but argument is of type ‘int (*)[5]
Добавлено через 1 минуту
Цитата Сообщение от OstapBender Посмотреть сообщение
voral, массивы сделай динамическими и этот вариант заработает, и никаких смещений выщитывать не нужно, оператор [] перегружен уже
Так мой вопрос был именно в этом. С динамическим то массивом я сталкивался.
0
CAHTEXHUK
Заблокирован
14.07.2011, 13:16 #45
Цитата Сообщение от OstapBender Посмотреть сообщение
// в данном случае писать &a[i][0] реально тупо
про это и речь как бы
0
14.07.2011, 13:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.07.2011, 13:16
Привет! Вот еще темы с ответами:

Раздел: С++ для начинающих - C++
Помогите!!!! Я очень плохо эти функции понимаю.... Написати функцію, яка обчислює значення виразу, та визначити її значення для...

с++ для очень начинающих - C++
ребят, очень хочу писать на с++, нашла книгу, учусь, но для написания первой программы мне нужен ms dos. Знаю, что он идет как операционная...

программа для начинающих - C++
Помогите выполнить задание из книжки(не знаю када че использовать и как): Объявите переменную типа char с именем friend_sex и...

Тетрис для начинающих - C++
Всем привет! знаю основы C# но необходимо ознакомиться с C++ и написать тетрис. даже не знаю с чего начать вот туториальчик по...


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

Или воспользуйтесь поиском по форуму:
45
Закрытая тема Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru