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

Динамические массивы - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 5.00
Steam.dll
 Аватар для Steam.dll
3 / 3 / 0
Регистрация: 05.11.2010
Сообщений: 131
23.12.2010, 15:17     Динамические массивы #1
помогите выполнить задание
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
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
 
void main()
{
    int n,m;
    unsigned int **a;
    int i,j;
    printf("Vvedite n->"); scanf("%d",&n);
    printf("Vvedite m->"); scanf("%d",&m);
    a=new unsigned int*[n];
    for(i=0;i<n;i++)
    {
        a[i]=new unsigned int[m];
    }
    printf("\n\nMASSIV A: \n");
    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
        {
            a[i][j]=rand()%50-50;
            printf("%d", a[i][j]);
        }
         printf("\n");
    }
}
вот в этой програме мне нужно число с наибольшим по модулю значенеем заменить на 0 и я не знаю как указать на больший элемент масива по модулю.
и вот в этой програме я незнаю как энтеграл написать
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
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
void main()
{
        int r;
        unsigned int *b;
        printf(" Vvedite rasmer>");
        scanf("%d", &r);
        printf("\nmassiv A\n");
        b=new unsigned int*[r];
        
        for (int m = n - 2; m >= 1; m *= i, m -= 2)
        {    
            for(int i=0;i<r;i++)
            {
                b[i]=i/!!!!!!!!!;
                printf("%d", b[i]);
        
            
            
        }
    
}
как энтеграл представить.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.12.2010, 15:17     Динамические массивы
Посмотрите здесь:

Динамические массивы C++
C++ динамические массивы ?
Динамические массивы C++
C++ Динамические массивы
C++ Динамические массивы
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
fygaska
4 / 4 / 1
Регистрация: 18.10.2010
Сообщений: 27
23.12.2010, 15:43     Динамические массивы #2
И еще вопросик от меня, возможно не по теме:

C++
1
a=new unsigned int *[n];
Что означает эта строчка? Особенно *[n].

я читал, что динамический массив создается примерно так:

C++
1
2
int n = 10;
float *m = new float [n];
Steam.dll
 Аватар для Steam.dll
3 / 3 / 0
Регистрация: 05.11.2010
Сообщений: 131
23.12.2010, 16:46  [ТС]     Динамические массивы #3
это вот
C++
1
a=new unsigned int *[n];
как нас учили якобы выделение памети под n . n должно вводится с клавиатуры вместе с m . сам операт ор new это выделение памяти и чтоб её освободить потом надо писать delete (b gthtvtyye. rjnjhe. yflj cnthtnm)Сам я учусь на 1 курсе нам ничего не обьясняют до всего сам дохожу хорошо люди добрые сдесь помогают) Так что лучше меня не слушать возможно яя сам ошибаюсь. И ещё как я понял учат все по разному нас учат пользоватся printf scanf а паралельную групу другой преподаватель cout и ещё чтото
Kill100
 Аватар для Kill100
356 / 245 / 32
Регистрация: 11.12.2010
Сообщений: 1,058
Завершенные тесты: 1
23.12.2010, 16:50     Динамические массивы #4
модуль.
C
1
#include <math.h>
и после чего fabs(x)
где x-число от которого нужно взять модуль...
C++
1
2
3
4
5
6
7
8
9
10
//Функция поиска максимума по модулю
float max(float**a){
float max=a[0][0];
for (int i=0; i<n; i++) {
for (int j=0; j<m; j++){
if (max<fabs(a[i][j])){ max=fabs(a[i][j]);};
};
};
return max;
}
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
23.12.2010, 16:54     Динамические массивы #5
Цитата Сообщение от fygaska Посмотреть сообщение
я читал, что динамический массив создается примерно так:
Так создается одномерный динамический массив, а так

C++
1
2
3
4
5
6
int **arr;
arr=new int*[m];
for(int i=0; i<m; i++)
{
   arr[i]=new int[n];
}
двумерный массив mxn!!!!

Добавлено через 2 минуты
Цитата Сообщение от Steam.dll Посмотреть сообщение
нас учат пользоватся printf scanf а паралельную групу другой преподаватель cout и ещё чтото
На форуме уже много раз говорилось, что scanf,printf - ето СИшные функции, в то время как cin,cout - функции С++!!!
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
23.12.2010, 16:57     Динамические массивы #6
Цитата Сообщение от MILAN Посмотреть сообщение
в то время как cin,cout - функции С++!!!
Поправка: это не функции, а обекты классов.
cin - обект класса istream
cout - обект класса ostream
knkd
37 / 36 / 2
Регистрация: 08.08.2010
Сообщений: 162
23.12.2010, 17:00     Динамические массивы #7
Цитата Сообщение от MILAN Посмотреть сообщение
На форуме уже много раз говорилось, что scanf,printf - ето СИшные функции, в то время как cin,cout - функции С++!!!
Вот интересно, есть ли для С++ что-то такое же удобное как printf?
А то вывод форматной строки, с разными форматами (строка, int, double с разной точностью) превращается в простыню кода.
Нет ли чего, похожего хотя бы на python-овский "".format(), чтобы было просто в использовании?
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
23.12.2010, 17:03     Динамические массивы #8
Цитата Сообщение от knkd Посмотреть сообщение
Вот интересно, есть ли для С++ что-то такое же удобное как printf?
cout чем не устраевает ?
knkd
37 / 36 / 2
Регистрация: 08.08.2010
Сообщений: 162
23.12.2010, 17:21     Динамические массивы #9
Цитата Сообщение от asics Посмотреть сообщение
cout чем не устраевает ?
Очевидно же что тем, что:
Цитата Сообщение от knkd Посмотреть сообщение
вывод форматной строки, с разными форматами (строка, int, double с разной точностью) превращается в простыню кода.


Добавлю, специфика такова что приходится выводить большое количество данных в текстовом виде, с размещением в колонках.
При этом для выравнивания с текстом (для человекочитаемости) приходится использовать выравнивание под разную ширину поля.
Специфика данных заставляет печатать их с различной точностью после запятой, или в экспоненциальной форме.

Использование cout представляет собой несколько экранов кода, для каждой строки, что совершенно нечитаемо.
Kill100
 Аватар для Kill100
356 / 245 / 32
Регистрация: 11.12.2010
Сообщений: 1,058
Завершенные тесты: 1
23.12.2010, 18:12     Динамические массивы #10
ну так есть
C++
1
/t
knkd
37 / 36 / 2
Регистрация: 08.08.2010
Сообщений: 162
23.12.2010, 18:32     Динамические массивы #11
Цитата Сообщение от Kill100 Посмотреть сообщение
ну так есть
Который по разному отображается в разных редакторах и во многих сбоит, при слишком разной ширине строк?
Отчёты являются технической документацией, со стандартами представления и минимизации возможности разночтения.
Кроме того работа с точностью остаётся.
Получается излишне громоздко, приходится использовать fprintf...
Steam.dll
 Аватар для Steam.dll
3 / 3 / 0
Регистрация: 05.11.2010
Сообщений: 131
23.12.2010, 19:31  [ТС]     Динамические массивы #12
вот как применить
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
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
 
int main(void)
{
    int n,m;
    unsigned int **a;
    int i,j;
    printf("Vvedite n->"); scanf("%d",&n);
    printf("Vvedite m->"); scanf("%d",&m);
    a=new unsigned int*[n];
    for(i=0;i<n;i++)
    {
        a[i]=new unsigned int[m];
    }
    printf("\n\nMASSIV A: \n");
    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
        {
            a[i][j]=rand()%50-50;
            printf("%d", a[i][j]);
        }
         printf("\n");
    }
     int max(unsigned int **a);
{
     int max=a[0][0];
     for (i=0; i<n; i++) 
     {
         for (j=0; j<m; j++)
         {
     
             if (max<fabs(a[i][j]))
             { 
                 max=fabs(a[i][j]);
             }
         }
     }
return max;
}
    
}
попробывал чтото не работеет 3 ошибки вылетает
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
23.12.2010, 19:36     Динамические массивы #13
Цитата Сообщение от Steam.dll Посмотреть сообщение
попробывал чтото не работеет 3 ошибки вылетает
C++
1
2
3
4
if (max<abs(static_cast<int>(a[i][j])))
                         { 
                                 max=abs(static_cast<int>(a[i][j]));
                         }
Steam.dll
 Аватар для Steam.dll
3 / 3 / 0
Регистрация: 05.11.2010
Сообщений: 131
23.12.2010, 20:24  [ТС]     Динамические массивы #14
Спасибо но это мне не понятно
static_cast<int> мы не проходили ещё и я не понимаю можно как нибудь сделать это проще
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
23.12.2010, 21:49     Динамические массивы #15
Цитата Сообщение от Steam.dll Посмотреть сообщение
Спасибо но это мне не понятно
static_cast<int> мы не проходили ещё и я не понимаю можно как нибудь сделать это проще
C++
1
2
3
4
if (max<abs((int)a[i][j]))
                         { 
                                 max=abs((int)a[i][j]);
                         }
Steam.dll
 Аватар для Steam.dll
3 / 3 / 0
Регистрация: 05.11.2010
Сообщений: 131
23.12.2010, 23:49  [ТС]     Динамические массивы #16
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
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
 
int main(void)
{
        int n,m;
        unsigned int **a;
        int i,j;
        printf("Vvedite n->"); scanf("%d",&n);
        printf("Vvedite m->"); scanf("%d",&m);
        a=new unsigned int*[n];
        for(i=0;i<n;i++)
        {
                a[i]=new unsigned int[m];
        }
    printf("\n\nMASSIV A: \n");
        for(i=0;i<n;i++)
        {
                for(j=0;j<m;j++)
                {
                        a[i][j]=rand()%50-50;
                        printf("%d", a[i][j]);
                }
 
         printf("\n");
        }
     printf("GOGIGOGIGOGI");
     int max(unsigned int **a);
{
    int max=a[0][0];
     for (i=0; i<n; i++) 
         {
                 for (j=0; j<m; j++)
                 {
     
                         if (max<fabs(a[i][j]))
                         { 
                                 max=fabs(a[i][j]);
                                 printf("%d", a[i][j]);
                         }
                   
                 }
                 printf("\n");
         }
return max;
}
        
}
я сделал вот так только толку нет она также масив переписывает там в задании элемент с наибольшим по модулю значением заменить на 0 он не меняет(
Kill100
 Аватар для Kill100
356 / 245 / 32
Регистрация: 11.12.2010
Сообщений: 1,058
Завершенные тесты: 1
24.12.2010, 00:32     Динамические массивы #17
Я те кинул функцию.
Обрати внимание на слово функция.
Которая ищет максимум.
Если функции не проходили то в код проги вставь

C++
1
2
3
4
5
6
7
8
9
int max_i=0,  max_j=0;
int max=a[0][0];
for (int i=0; i<n; i++) {
for (int j=0; j<m; j++){
if (max<fabs(a[i][j])){ max=fabs(a[i][j]);  max_i=i;  max_j=j;};
};
};
 
a[max_i][max_j]=0;

А далее выводим.
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
24.12.2010, 10:54     Динамические массивы #18
Цитата Сообщение от Steam.dll Посмотреть сообщение
я сделал вот так только толку нет она также масив переписывает там в задании элемент с наибольшим по модулю значением заменить на 0 он не меняет(
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
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#include <conio.h>
#include <malloc.h>
 
int max(unsigned int **a, int n,int m);
 
int main(void)
{
        srand((unsigned)time(NULL));
        int n,m,maximum,i,j;;
        unsigned int **a;
        printf("Vvedite n->"); 
        scanf("%d",&n);
        printf("Vvedite m->"); 
        scanf("%d",&m);
        a=(unsigned int**)malloc(n*sizeof(unsigned int));
        for(i=0; i<n; i++)
        {
            a[i]=(unsigned int*)malloc(m*sizeof(unsigned int));
        }
        printf("\n\nMASSIV A: \n");
        for(i=0; i<n; i++)
        {
                for(j=0; j<m; j++)
                {
                        a[i][j]=rand()%50-50;
                        printf("%d  ", a[i][j]);
                }
            printf("\n");
        }
 printf("\nMax is %d\n\n",max(a,n,m));
 maximum=max(a,n,m);
 for(i=0; i<n; i++)
        {
                for(j=0; j<m; j++)
                {
                        if(a[i][j]==maximum)
                        {
                            a[i][j]=0;
                        }
                        printf("%d  ", a[i][j]);
                }
            printf("\n");
        }
 for(int i=0; i<n; i++)
 {
     free(a[i]);
 }
 free(a);
 getch();
 return 0;
}
 
int max(unsigned int **a,int n, int m)
   {
        int i,j;
        int max=a[0][0];
        for (i=0; i<n; i++) 
         {
              for (j=0; j<m; j++)
                 {
                     if (max<abs((int)a[i][j]))
                         { 
                                 max=abs(((int)a[i][j]));
                         }
                 }
          }
    return -max;
  }
Steam.dll
 Аватар для Steam.dll
3 / 3 / 0
Регистрация: 05.11.2010
Сообщений: 131
25.12.2010, 11:23  [ТС]     Динамические массивы #19
огромное спасибо за помощь

Добавлено через 12 часов 10 минут
а почему
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int max(unsigned int **a,int n, int m)
   {
        int i,j;
            int max=a[0][0];
        for (i=0; i<n; i++) 
         {
              for (j=0; j<m; j++)
                 {
                     if (max<abs((int)a[i][j]))
                         { 
                                 max=abs(((int)a[i][j]));
                         }
                 }
          }
    return -max;
  }
находится в программе в конце а не внутри где сам массив и как она на него влияет
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.12.2010, 12:27     Динамические массивы
Еще ссылки по теме:

Динамические массивы: C++
C++ динамические массивы
C++ Динамические массивы

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

Или воспользуйтесь поиском по форуму:
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
25.12.2010, 12:27     Динамические массивы #20
Цитата Сообщение от Steam.dll Посмотреть сообщение
находится в программе в конце а не внутри где сам массив и как она на него влияет
Функция может ноходится перед програмой, после програмы(тогда перед програмой нужно писать ее прототип), и внутри програмы. Просто мне так удобней, и вообже как по мне, функции внутри програмы делают код запутанным!!!!
Yandex
Объявления
25.12.2010, 12:27     Динамические массивы
Ответ Создать тему
Опции темы

Текущее время: 08:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru