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

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

Войти
Регистрация
Восстановить пароль
 
Chiakiii
0 / 0 / 0
Регистрация: 27.11.2011
Сообщений: 38
#1

Двумерный массив - C++

27.11.2011, 00:22. Просмотров 916. Ответов 14
Метки нет (Все метки)

1)Заполнить матрицу и вывести результат на экран
2)Заполнить матрицу и сохранить в 2 файла( текстовый file.txt и бинарный file.bin)
3)Прочитать матрицы из файлов и обе матрицы вывести на экран
Размеры массива вводит пользователь в диапазоне от 4 до 15. Пользователь указывает и количество столбцов, и количество строк. В зад. 2 и 3 сохраняется и читается только размер, указанный пользователем. Вычисление элемента массива a(ij) (заполнение массива) необходимо оформить в виде вызова функции double A( int i, int j). Заполнение массива, его обработка, вывод на экран и вывод в файлы должны быть выполнены отдельными циклами.


Сформировать матрицу A=(a(i,j)), где a(i,j)=1/i*i+2, i<=j
= 1/i+j, i>j
Найти сумму элементов k-го столбца.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.11.2011, 00:22     Двумерный массив
Посмотрите здесь:

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

двумерный массив - C++
суть программы - поменять четные столбцы матрицы местами 2 с 4, 4 с 6 и тд например задаю матрицу 5x5 результат 2 1 1 1...

Двумерный массив - C++
Задан двумерный динамический массив размером NxM.Определить количество размерных элементов матрицы (т.е повторяющиеся элементы считать один...

двумерный массив - C++
составить программу для вывода на экран двумерного массива из 4 столбцов и 5 строк целых чисел.Элементы массива заданы в программе

двумерный массив - C++
посмотрите пожалуйста правильно ли я написал функцию для ввода и вывовы двумерного массива ? в лекциях вроде так в книжке тоже а на пк не...

двумерный массив - C++
Подскажите пожалуйста, как задать двумерный массив с клавиатуры.

двумерный массив на с++ - C++
в двумерном массиве, элементы которого целые числа, вставить новую строку после строки, в которой находится первый встречный минимальный...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
BRcr
4006 / 2295 / 155
Регистрация: 03.02.2011
Сообщений: 5,064
Записей в блоге: 10
27.11.2011, 02:48     Двумерный массив #2

Не по теме:

Chiakiii, вы шпиён?? Вы кому-то так задание даете?


Продемонстрируйте свои наработки, толково опишите, что у вас не получается, и будет вам помощь!
Chiakiii
0 / 0 / 0
Регистрация: 27.11.2011
Сообщений: 38
28.11.2011, 22:48  [ТС]     Двумерный массив #3
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
#include <conio.h>
#include <stdio.h>
 
int main ()
{
int m, n, i, j, k;
float A[15][15], s;
//VVOD RAZMERA
do 
{
printf ("VVEDITE N = ");
scanf ("%d", &n);
}
while (n > 4 && n < 15);
 
do 
{
printf ("\nVVEDITE M = "); 
scanf ("%d", &m);
}
while (m > 4 && m < 15);
//VVOD ZNACHENIY 
for(i=0; i<n; i++)
for(j=0; j<m; j++)
{
printf("A[%d][%d]=", i, j);
scanf("%lf", &A[i][j]);
}
 
//IZMENENIE MASSIVA
for(i=0; i<n; i++)
for(j=0; j<m; j++)
{
if (i <= j) 
 
A[i][j] = (1/((i*i)+2));
else
A[i][j] = (1/(i+j)); 
}
printf ("\nIZMENENNIY MASSIV\n"); 
for(i=0; i<n; i++)
for(j=0; j<m; j++)
{
printf ("A[%d][%d] = ", i, j);
printf ("%6.10f", A[i][j]);
printf ("\n");
} 
 
//SUMMA STOLBCA
printf ("\nVVEDITE NOMER STOLBCA [0..M] = ");
scanf ("%d", j);
s = 0;
for (i=0; i < n; i++)
{
s = s + A[i][j];
} 
 
 
printf ("SUMMA[%d] = ", s); 
getch(); 
}
BRcr
4006 / 2295 / 155
Регистрация: 03.02.2011
Сообщений: 5,064
Записей в блоге: 10
29.11.2011, 00:22     Двумерный массив #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
i = 0;
do {
  if (i) printf ("N value must comply to: 3<N<16. VVEDITE N = ");
  else printf ("VVEDITE N = ");
  scanf ("%d", &n);
  i = 1;
} while (n < 4 || n > 15);
 
i = 0;
do {
  if (i) printf ("M value must comply to: 3<M<16. VVEDITE M = ");
  else printf ("\nVVEDITE M = "); 
  scanf ("%d", &m);
  i = 1;
} while (m < 4 || m > 15);
C++
1
printf ("SUMMA[%d] = %6.10f", j, s);
Chiakiii
0 / 0 / 0
Регистрация: 27.11.2011
Сообщений: 38
29.11.2011, 15:39  [ТС]     Двумерный массив #5
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
#include <conio.h>
#include <stdio.h>
 
int main ()
{
int m, n, i, j, k;
float A[15][15], s;
//VVOD RAZMERA
i = 0;
do {
  if (i) printf ("N value must comply to: 3<N<16. VVEDITE N = ");
  else printf ("VVEDITE N = ");
  scanf ("%d", &n);
  i = 1;
} while (n < 4 || n > 15);
 
i = 0;
do {
  if (i) printf ("M value must comply to: 3<M<16. VVEDITE M = ");
  else printf ("\nVVEDITE M = "); 
  scanf ("%d", &m);
  i = 1;
} while (m < 4 || m > 15);
//VVOD ZNACHENIY 
for(i=0; i<n; i++)
for(j=0; j<m; j++)
{
printf("A[%d][%d]=", i, j);
scanf("%lf", &A[i][j]);
}
 
//IZMENENIE MASSIVA
for(i=0; i<n; i++)
for(j=0; j<m; j++)
{
if (i <= j) 
 
A[i][j] = (1/((i*i)+2));
else
A[i][j] = (1/(i+j)); 
}
printf ("\nIZMENENNIY MASSIV\n"); 
for(i=0; i<n; i++)
for(j=0; j<m; j++)
{
printf ("A[%d][%d] = ", i, j);
printf ("%6.10f", A[i][j]);
printf ("\n");
} 
 
//SUMMA STOLBCA
printf ("\nVVEDITE NOMER STOLBCA [0..M] = ");
scanf ("%d", j);
s = 0;
for (i=0; i < n; i++)
 
{
s = s + A[i][j];
}printf ("SUMMA[%d] = %6.10f", j, s);
getch(); 
}
В конце ошибка, завершение программы
BRcr
4006 / 2295 / 155
Регистрация: 03.02.2011
Сообщений: 5,064
Записей в блоге: 10
29.11.2011, 17:31     Двумерный массив #6
Цитата Сообщение от Chiakiii Посмотреть сообщение
В конце ошибка, завершение программы
В каком именно месте-то? И какой текст ошибки?
Chiakiii
0 / 0 / 0
Регистрация: 27.11.2011
Сообщений: 38
29.11.2011, 18:29  [ТС]     Двумерный массив #7
Это исправил, но теперь неверно считает сумму стоблца. Выводит всегда 0.
C++
1
2
3
4
5
6
7
8
9
10
11
//SUMMA STOLBCA
printf ("\nVVEDITE NOMER STOLBCA [0..M] = ");
scanf ("%d", &j);
s = 0;
for (i=0; i < n; i++)
 
{
s = s + A[i][j];
}printf ("SUMMA[%d] = %6.10f", j, s);
getch(); 
}
Вот, еще изменил, теперь выводит сумму число -1047585...
C++
1
2
3
4
5
6
7
8
9
10
11
12
//SUMMA STOLBCA
printf ("\nVVEDITE NOMER STOLBCA [0..M] = ");
scanf ("%d", &j);
s = 0;
 
for (j=0; j < m; j++)
{
s = s + A[i][j];
}printf ("SUMMA[%d] = %d", j, s)
;
getch(); 
}
BRcr
4006 / 2295 / 155
Регистрация: 03.02.2011
Сообщений: 5,064
Записей в блоге: 10
29.11.2011, 21:02     Двумерный массив #8
Вы просите пользователя указать столбец j:
Цитата Сообщение от Chiakiii Посмотреть сообщение
printf ("\nVVEDITE NOMER STOLBCA [0..M] = ");
scanf ("%d", &j);
А затем используете j как счетчик:
Цитата Сообщение от Chiakiii Посмотреть сообщение
for (j=0; j < m; j++)
{
s = s + A[i][j];
}
Вы же понимаете, почему это неправильно? Попробуйте так:
C++
1
2
3
4
5
6
7
8
printf ("\nVVEDITE NOMER STOLBCA [0..M] = ");
scanf ("%d", &j);
 
for ( i=0, s = 0; i < m; i++ ) { s += A[i][j]; }
 
printf ("SUMMA[%d] = %f", j, s);
getch(); 
}
Chiakiii
0 / 0 / 0
Регистрация: 27.11.2011
Сообщений: 38
29.11.2011, 21:11  [ТС]     Двумерный массив #9
Сумма опять равна 0, что-то не то.
BRcr
4006 / 2295 / 155
Регистрация: 03.02.2011
Сообщений: 5,064
Записей в блоге: 10
29.11.2011, 21:22     Двумерный массив #10
Вы сперва задаете переменную j функцией scanf:
C++
1
scanf ("%d", &j);
Затем вы приравниваете ее к нулю и используете как счетчик:
C++
1
for (j=0; j < m; j++)
переменная i при этом имеет значение, равное n-1, полученное в конце вот этих циклов:
C++
1
2
3
4
5
6
7
for(i=0; i<n; i++)
for(j=0; j<m; j++)
{
printf ("A[%d][%d] = ", i, j);
printf ("%6.10f", A[i][j]);
printf ("\n");
}
Это ошибка.
Chiakiii
0 / 0 / 0
Регистрация: 27.11.2011
Сообщений: 38
29.11.2011, 21:33  [ТС]     Двумерный массив #11
BRcr,
Спасибо, это я уже понял. Но сумма все равно равна 0.
BRcr
4006 / 2295 / 155
Регистрация: 03.02.2011
Сообщений: 5,064
Записей в блоге: 10
29.11.2011, 21:47     Двумерный массив #12
Весь код в студию. В том виде, в котором он у вас щас.
Chiakiii
0 / 0 / 0
Регистрация: 27.11.2011
Сообщений: 38
29.11.2011, 22:32  [ТС]     Двумерный массив #13
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
#include <conio.h>
#include <stdio.h>
 
int main ()
{
int m, n, i, j, k;
float A[15][15], s;
//VVOD RAZMERA
i = 0;
do {
  if (i) printf ("N value must comply to: 3<N<16. VVEDITE N = ");
  else printf ("VVEDITE N = ");
  scanf ("%d", &n);
  i = 1;
} while (n < 4 || n > 15);
 
i = 0;
do {
  if (i) printf ("M value must comply to: 3<M<16. VVEDITE M = ");
  else printf ("\nVVEDITE M = "); 
  scanf ("%d", &m);
  i = 1;
} while (m < 4 || m > 15);
//VVOD ZNACHENIY 
for(i=0; i<n; i++)
for(j=0; j<m; j++)
{
printf("A[%d][%d]=", i, j);
scanf("%lf", &A[i][j]);
}
 
//IZMENENIE MASSIVA
 
printf ("\nIZMENENNIY MASSIV\n"); 
for(i=0; i<n; i++)
for(j=0; j<m; j++)
{
    
    if (i <= j) 
A[i][j] = (1/((i*i)+2));
else 
A[i][j] = (1/(i+j));
printf ("A[%d][%d] = ", i, j);
printf ("%d", A[i][j]);
printf ("\n");
}
 
//SUMMA STOLBCA
printf ("\nVVEDITE NOMER STOLBCA [0..M] = ");
scanf ("%d", &j);
s = 0;
 
for (i=0; i < m; i++)
{
s+= A[i][j];
}printf ("SUMMA[%d] = %d", j, s);
getch(); 
}
Добавлено через 31 минуту
Вроде бы ошибка в изменении массива.
BRcr
4006 / 2295 / 155
Регистрация: 03.02.2011
Сообщений: 5,064
Записей в блоге: 10
29.11.2011, 22:56     Двумерный массив #14
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
    int m, n, i, j, k;
    float A[15][15], s;
    // VVOD RAZMERA
    i = 0;
    do {
        if ( i ) {
            printf( "N value must comply to: 3<N<16. VVEDITE N = " );
        }
        else {
            printf( "VVEDITE N = " );
        }
        scanf( "%d", &n );
        i = 1;
    } while ( n < 4 || n > 15 );
 
    i = 0;
    do {
        if ( i ) {
            printf( "M value must comply to: 3<M<16. VVEDITE M = " );
        }
        else {
            printf( "\nVVEDITE M = " );
        }
        scanf( "%d", &m );
        i = 1;
    } while ( m < 4 || m > 15 );
 
/*
        // VVOD ZNACHENIY
        for ( i = 0; i < n; i++ )
            for ( j = 0; j < m; j++ )
            {
                printf( "A[%d][%d]=", i, j );
                scanf( "%lf", &A[i][j] );
            }
 
*/
    // IZMENENIE MASSIVA
 
    printf( "\nIZMENENNIY MASSIV\n" );
    for ( i = 0; i < n; i++ )
        for ( j = 0; j < m; j++ )
        {
 
            if ( i <= j ) {
                A[i][j] = ( 1.0 / ( ( i * i ) + 2.0 ) );
            }
            else {
                A[i][j] = ( 1.0 / ( i + j ) );
            }
            printf( "A[%d][%d] = ", i, j );
            printf( "%f", A[i][j] );
            printf( "\n" );
        }
 
    // SUMMA STOLBCA
    printf( "\nVVEDITE NOMER STOLBCA [0..M] = " );
    scanf( "%d", &j );
    s = 0;
 
    for ( i = 0; i < n; i++ )
    {
        s += A[i][j];
    }
    printf( "SUMMA[%d] = %f", j, s );
    getch( );
Ох уж эти точки! Совсем из головы вылетело! Все, так арбайтен 100%.
Кстати, ввод значений элементов массива в ручную не нужен - все равно ж массив по формулам заполняется.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.11.2011, 23:47     Двумерный массив
Еще ссылки по теме:

Двумерный массив - C++
В квадратной матрице поменять местами элементы, симметричные относительно главной диагонали

Двумерный массив. - C++
Приветствую! Задание: Дана целочисленная прямоугольная матрица. Определить: 1. количество столбцов, содержащих хотя бы один...

Двумерный массив - C++
Каждое место в кинотеатре имеет свою цену. Создайте программу, в которой кинозал представлен в виде двумерного массива, элементы которого...

Двумерный массив - C++
Составить программу, в которой сформировать динамический двумерный массив В, состоящий из k строк и p столбцов, в отдельной функции...

двумерный массив - C++
в массиве все эл-ты, стоящие выше макс эл-та, заменить на мин. эл-т последней строки


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

Или воспользуйтесь поиском по форуму:
Chiakiii
0 / 0 / 0
Регистрация: 27.11.2011
Сообщений: 38
29.11.2011, 23:47  [ТС]     Двумерный массив #15
BRcr,
Благодарю, не подскажите, как сделать:
Заполнить матрицу согласно варианту и сохранить ее в 2 файла (текстовый «file.txt» и бинарный «file.bin»).
Все задания объединены в одну программу, при старте которой пользователю предлагается выбрать, какое задание необходимо выполнить.
Yandex
Объявления
29.11.2011, 23:47     Двумерный массив
Ответ Создать тему
Опции темы

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