Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
Chiakiii
0 / 0 / 0
Регистрация: 27.11.2011
Сообщений: 38
1

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

27.11.2011, 00:22. Просмотров 1027. Ответов 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-го столбца.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.11.2011, 00:22
Ответы с готовыми решениями:

Сделайте, чтобы двумерный вектор обогнал двумерный массив при заполнении случайными числами
Всем привет! Попробовал сравнить время заполнения векторов в векторе и массивов в массиве...

Как можно вложить двумерный массив в двумерный?
Нужно написать программу перемножения двух матриц размерностью МxМ, элементы которых, матрицы...

Массив: Как скопировать двумерный массив в другой массив?
Как скопировать двумерный массив в другой массив?

Массив: преобразорвать двумерный массив в одномерный и отсортировать его методом пузырька
всем привет. народ помогите с прогой, конкретно с функцией sort (65 строка), она должна двухмерный...

Массив: Как можно задать и вывести симметричный двумерный массив?
как можно задать и вывести симметричный массив

14
BRcr
4025 / 2314 / 292
Регистрация: 03.02.2011
Сообщений: 5,064
Записей в блоге: 10
27.11.2011, 02:48 2

Не по теме:

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


Продемонстрируйте свои наработки, толково опишите, что у вас не получается, и будет вам помощь!
0
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(); 
}
0
BRcr
4025 / 2314 / 292
Регистрация: 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);
1
29.11.2011, 00:22
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(); 
}
В конце ошибка, завершение программы
0
BRcr
4025 / 2314 / 292
Регистрация: 03.02.2011
Сообщений: 5,064
Записей в блоге: 10
29.11.2011, 17:31 6
Цитата Сообщение от Chiakiii Посмотреть сообщение
В конце ошибка, завершение программы
В каком именно месте-то? И какой текст ошибки?
0
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(); 
}
0
BRcr
4025 / 2314 / 292
Регистрация: 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(); 
}
1
Chiakiii
0 / 0 / 0
Регистрация: 27.11.2011
Сообщений: 38
29.11.2011, 21:11  [ТС] 9
Сумма опять равна 0, что-то не то.
0
BRcr
4025 / 2314 / 292
Регистрация: 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");
}
Это ошибка.
1
Chiakiii
0 / 0 / 0
Регистрация: 27.11.2011
Сообщений: 38
29.11.2011, 21:33  [ТС] 11
BRcr,
Спасибо, это я уже понял. Но сумма все равно равна 0.
0
BRcr
4025 / 2314 / 292
Регистрация: 03.02.2011
Сообщений: 5,064
Записей в блоге: 10
29.11.2011, 21:47 12
Весь код в студию. В том виде, в котором он у вас щас.
0
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 минуту
Вроде бы ошибка в изменении массива.
0
BRcr
4025 / 2314 / 292
Регистрация: 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%.
Кстати, ввод значений элементов массива в ручную не нужен - все равно ж массив по формулам заполняется.
1
Chiakiii
0 / 0 / 0
Регистрация: 27.11.2011
Сообщений: 38
29.11.2011, 23:47  [ТС] 15
BRcr,
Благодарю, не подскажите, как сделать:
Заполнить матрицу согласно варианту и сохранить ее в 2 файла (текстовый «file.txt» и бинарный «file.bin»).
Все задания объединены в одну программу, при старте которой пользователю предлагается выбрать, какое задание необходимо выполнить.
0
29.11.2011, 23:47
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.11.2011, 23:47

Чем отличаются двумерный символьный массив и массив указателей на строки
Двумерный символьный массив и массив указателей на строки. Собственно чем они отличаются? Заранее...

Дан двумерный массив 3х3. Получить одномерный массив из из отрицательных элементов матрицы.
Пожалуйста, помогите решить простым методом задачку, просто не могу понять смысл ее выполнения....

Дан двумерный массив размерностью 4*5. Сформировать одномерный массив
Дан двумерный массив размерностью 4*5, заполненный целыми числами с клавиатуры. Сформировать...


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

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

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