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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
Abortmaher007
9 / 9 / 0
Регистрация: 22.01.2010
Сообщений: 67
#1

Вставка столбцов в массиве, после каждого четного столбца. Ошибка в коде. - C++

10.02.2010, 12:28. Просмотров 1303. Ответов 11
Метки нет (Все метки)

Уважаемые!

Сначала суть:
Дан двухмерный массив целых из 20 столбцов. Вставить в него столбец из 10 элементов после всех четных столбцов.

Написал программу. Сделал алгоритм через присвоение второму массиву. Ошибка, в общем не получается. Кто делал уже, помогите пожалуйста, скинув самую главную часть в коде программы. Буду весьма признателен!

Добавлено через 14 часов 9 минут
Ответьте пожалуйста !
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.02.2010, 12:28     Вставка столбцов в массиве, после каждого четного столбца. Ошибка в коде.
Посмотрите здесь:
Добавить столбцы после каждого четного столбца матрицы C++
В целочисленном массиве после каждого четного числа вставить максимальный элемент массива C++
C++ В целочисленном массиве после каждого четного числа вставить максимальный элемент массива
В массиве из 4 строк и 3 столбцов найти наименьший элемент каждого столбца C++
Задана матрица A(n,n). Первый элемент каждого четного столбца заменить суммой простых чисел этого столбца, пер C++
C++ Произведение каждого четного столбца массива
Среднее арифметическое каждого (четного) столбца матрицы C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
deff78
11 / 11 / 1
Регистрация: 09.12.2009
Сообщений: 56
10.02.2010, 15:32     Вставка столбцов в массиве, после каждого четного столбца. Ошибка в коде. #2
Т.е. был массив 20х10, а должен стать 30х10??
Abortmaher007
9 / 9 / 0
Регистрация: 22.01.2010
Сообщений: 67
14.02.2010, 01:33  [ТС]     Вставка столбцов в массиве, после каждого четного столбца. Ошибка в коде. #3
Т.е. был массив 10х20, а стал 10х30
Помогите, это последняя 31я задача (
insideone
Модератор
Автор FAQ
3638 / 916 / 49
Регистрация: 10.01.2010
Сообщений: 2,468
14.02.2010, 01:35     Вставка столбцов в массиве, после каждого четного столбца. Ошибка в коде. #4
Цитата Сообщение от Abortmaher007 Посмотреть сообщение
Написал программу. Сделал алгоритм через присвоение второму массиву. Ошибка, в общем не получается.
Выложите ваши наработки пожалуйста, я не совсем понял где затруднение
Abortmaher007
9 / 9 / 0
Регистрация: 22.01.2010
Сообщений: 67
14.02.2010, 01:36  [ТС]     Вставка столбцов в массиве, после каждого четного столбца. Ошибка в коде. #5
Хорошо, просто я что-то не правильно делал, выложу
insideone
Модератор
Автор FAQ
3638 / 916 / 49
Регистрация: 10.01.2010
Сообщений: 2,468
14.02.2010, 01:42     Вставка столбцов в массиве, после каждого четного столбца. Ошибка в коде. #6
Смотрите, сначало просто копируете из того что 10х20 в 10х30. Второй больше - в него все влезет.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
for (int i = 0; i < 10; i++)
   for (int j = 0; j < 21)
   { // B - второй более крупный массив
       if ( j == 20 )
       {
           type* C = &B[j];
           for (int k = 0; k < 10; k++)
           {
               // то что мы тут сделаем с C отразится на B
               // редактируя C[0] мы редактируем B[20]
           }
       continue;
       }
       B[i][j] = A[i][j];
   }
Хм... но в вашем случае нужно найти четный столбец и после него уже что то делать с С... что то я не смекну как сделать задачку. Может вы что попробуете? Иль сложно то что выше?
kazak
3034 / 2355 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
14.02.2010, 09:20     Вставка столбцов в массиве, после каждого четного столбца. Ошибка в коде. #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
for (int j = 0, j_a = 0; j < 30; j++)
{
   for (int i = 0; i < 10; i++)
   {
      if ((j+1) % 2 ==0)
         b[i][j] = c[i];
      else
         b[i][j] = a[i][j_a]
   }
   if ((j+1) % 2 != 0)
      j_a++;
}
a[10][20] - исходный массив
b[10][30] - получаемый массив
c[10] - массив содержащий вставляемый столбец
Abortmaher007
9 / 9 / 0
Регистрация: 22.01.2010
Сообщений: 67
14.02.2010, 20:34  [ТС]     Вставка столбцов в массиве, после каждого четного столбца. Ошибка в коде. #8
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
#include<stdio.h>
#include<math.h>
main()
{
int a[10][20]={{1,1,1,4},
             {1,1,4,1},
             {1,4,1,1},
             {4,1,1,1}};
int d[10][30];
int i=0, j=0;
int n=2;
int s;
 
for(i=0;i<10;i++)
{
for(j=0;j<30;j++)
{
if(j==n)
{
n=n+3;
d[i][j]=10;
d[i][j+1]=a[i][j];
}
else
d[i][j]=a[i][j];
printf(" d[%d][%d]=%d\n ", i, j, d[i][j]);
}
}
getch();
return;
}
}
Мне нужно на Турбо Си, уважаемые! Где здесь ошибка ?
Присваивает не во всех строках!
insideone
Модератор
Автор FAQ
3638 / 916 / 49
Регистрация: 10.01.2010
Сообщений: 2,468
14.02.2010, 20:56     Вставка столбцов в массиве, после каждого четного столбца. Ошибка в коде. #9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    for(int i = 0; i < 10; i++) // i - строка
    {
        for(int j = 0; j < 30; j++) // j столбец
        {
            if( (j & 1) == 0 )
            // вставлять надо после четных столбцов
            // т.е. в нечетный
            {
                d[i][j] = 10; // не знаю что вставлять, пусть 10
            }
            else
            {
                d[i][j] = a[i][j];
            }
            printf("%d ", d[i][j]);
        }
        printf("\n");
    }
Турбо Си нету, но думаю это запустится. А присваивается может т.к. вы не заполнили весь массив?
Abortmaher007
9 / 9 / 0
Регистрация: 22.01.2010
Сообщений: 67
14.02.2010, 21:02  [ТС]     Вставка столбцов в массиве, после каждого четного столбца. Ошибка в коде. #10
В массиве на Си при не полной инициализации все забытые элементы приравниваются нулю. Ошибки в этом нет. Сейчас посмотрим Ваше

Добавлено через 3 минуты
Тут совсем не такой алгоритм, извините, но даже запустить если - будет совсем другая программа. Вставка - не замена. Алгоритм проводится через n, строки в массиве и столбцы считаются от нуля
insideone
Модератор
Автор FAQ
3638 / 916 / 49
Регистрация: 10.01.2010
Сообщений: 2,468
14.02.2010, 21:22     Вставка столбцов в массиве, после каждого четного столбца. Ошибка в коде. #11
Прошу прощения, тяжело понять что вы хотите. Напишите исходные данные и те которые должны получиться. Кстати "Вставка - не замена" конечно, но о какой замене может идти речь когда массив d вообще заполняется с нуля? Считать четный не четный столбец можно заменяя ноль на один, как вам угодно...
if( (j & 1) == 0 )
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.02.2010, 13:15     Вставка столбцов в массиве, после каждого четного столбца. Ошибка в коде.
Еще ссылки по теме:
Определить сумму элементов каждого столбца левой половины и сумму элементов каждого четного столбца правой половины матрицы A C++
C++ Определить для каждого четного столбца максимальный элемент
C++ Первый элемент каждого четного столбца заменить средним арифметическим
Определить для каждого четного столбца: количество ненулевых элементов и их произведение C++
C++ После каждого четного элемента массива вставить число К

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

Или воспользуйтесь поиском по форуму:
kazak
3034 / 2355 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
15.02.2010, 13:15     Вставка столбцов в массиве, после каждого четного столбца. Ошибка в коде. #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
46
47
48
49
50
51
52
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
 
int main()
{
   int a[10][20];
   int b[10][30];
   int i, j, j_a;
 
   /*srand(time(NULL)); */
 
   for (i = 0; i < 10; i++)
   {
      for (j = 0; j < 20; j++)
      {
         a[i][j] = rand() % 3 +2;
         printf("%2i", a[i][j]);
      }
      printf("\n");
   }
   printf("\n");
   j_a = 0;
   for (j = 0, j_a = 0; j < 30; j++, j_a++)
   {
      if (j_a % 2 == 0 && j_a != 0)
      {
         for (i = 0; i < 10; i++)
         {
            b[i][j] = 1;
            b[i][j+1] = a[i][j_a];
         }
         j++;
      }
      else
         for (i = 0; i < 10; i++)
         {
            b[i][j] = a[i][j_a];
         }
   }
   for (i = 0; i < 10; i++)
   {
      for (j = 0; j < 30; j++)
      {
         printf("%2i", b[i][j]);
      }
      printf("\n");
   }
   getch();
   return 0;
}
Yandex
Объявления
15.02.2010, 13:15     Вставка столбцов в массиве, после каждого четного столбца. Ошибка в коде.
Ответ Создать тему
Опции темы

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