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

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

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

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

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

Уважаемые!

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

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

Добавлено через 14 часов 9 минут
Ответьте пожалуйста !
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.02.2010, 12:28
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вставка столбцов в массиве, после каждого четного столбца. Ошибка в коде. (C++):

Добавить столбцы после каждого четного столбца матрицы - C++
Дан двумерный динамический массив. И надо добавить столбцы после каждого четного столбца матрицы. Я сделал, что бы добовлялся столбец из...

В целочисленном массиве после каждого четного числа вставить максимальный элемент массива - C++
В целочисленном массиве X(N) после каждого четного числа вставить максимальный элемент массива. Найти среднее арифметическое элементов ...

В целочисленном массиве после каждого четного числа вставить максимальный элемент массива - C++
В целочисленном массиве X(N) после каждого четного числа вставить максимальный элемент массива. Найти среднее арифметическое элементов...

В массиве из 4 строк и 3 столбцов найти наименьший элемент каждого столбца - C++
В массиве из 4 строк и 3 столбцов найти наименьший элемент каждого столбца

Задана матрица A(n,n). Первый элемент каждого четного столбца заменить суммой простых чисел этого столбца, пер - C++
Надо решить такую задачу,помогите,а то не шарю що делать: Задана матрица A(n,n). Первый элемент каждого четного столбца заменить суммой...

Произведение каждого четного столбца массива - C++
Помогите, кому не сложно, пожалуйста) В двумерном массиве чисел подсчитать произведение каждого четного столбца массива(массив должен...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
deff78
11 / 11 / 1
Регистрация: 09.12.2009
Сообщений: 56
10.02.2010, 15:32 #2
Т.е. был массив 20х10, а должен стать 30х10??
0
Abortmaher007
-1 / 9 / 0
Регистрация: 22.01.2010
Сообщений: 67
14.02.2010, 01:33  [ТС] #3
Т.е. был массив 10х20, а стал 10х30
Помогите, это последняя 31я задача (
0
insideone
Модератор
Автор FAQ
3639 / 918 / 49
Регистрация: 10.01.2010
Сообщений: 2,469
14.02.2010, 01:35 #4
Цитата Сообщение от Abortmaher007 Посмотреть сообщение
Написал программу. Сделал алгоритм через присвоение второму массиву. Ошибка, в общем не получается.
Выложите ваши наработки пожалуйста, я не совсем понял где затруднение
0
Abortmaher007
-1 / 9 / 0
Регистрация: 22.01.2010
Сообщений: 67
14.02.2010, 01:36  [ТС] #5
Хорошо, просто я что-то не правильно делал, выложу
0
insideone
Модератор
Автор FAQ
3639 / 918 / 49
Регистрация: 10.01.2010
Сообщений: 2,469
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];
   }
Хм... но в вашем случае нужно найти четный столбец и после него уже что то делать с С... что то я не смекну как сделать задачку. Может вы что попробуете? Иль сложно то что выше?
1
kazak
3035 / 2356 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
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] - массив содержащий вставляемый столбец
1
Abortmaher007
-1 / 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;
}
}
Мне нужно на Турбо Си, уважаемые! Где здесь ошибка ?
Присваивает не во всех строках!
0
insideone
Модератор
Автор FAQ
3639 / 918 / 49
Регистрация: 10.01.2010
Сообщений: 2,469
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");
    }
Турбо Си нету, но думаю это запустится. А присваивается может т.к. вы не заполнили весь массив?
1
Abortmaher007
-1 / 9 / 0
Регистрация: 22.01.2010
Сообщений: 67
14.02.2010, 21:02  [ТС] #10
В массиве на Си при не полной инициализации все забытые элементы приравниваются нулю. Ошибки в этом нет. Сейчас посмотрим Ваше

Добавлено через 3 минуты
Тут совсем не такой алгоритм, извините, но даже запустить если - будет совсем другая программа. Вставка - не замена. Алгоритм проводится через n, строки в массиве и столбцы считаются от нуля
0
insideone
Модератор
Автор FAQ
3639 / 918 / 49
Регистрация: 10.01.2010
Сообщений: 2,469
14.02.2010, 21:22 #11
Прошу прощения, тяжело понять что вы хотите. Напишите исходные данные и те которые должны получиться. Кстати "Вставка - не замена" конечно, но о какой замене может идти речь когда массив d вообще заполняется с нуля? Считать четный не четный столбец можно заменяя ноль на один, как вам угодно...
if( (j & 1) == 0 )
0
kazak
3035 / 2356 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
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;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.02.2010, 13:15
Привет! Вот еще темы с ответами:

Среднее арифметическое каждого (четного) столбца матрицы - C++
Дано натуральное число n, действительная матрица размером n*9. Найти среднее арифметическое: а) каждого из столбцов; б) каждого из...

Определить сумму элементов каждого столбца левой половины и сумму элементов каждого четного столбца правой половины матрицы A - C++
Матрица A (M кратно 4) разделена по вертикали на две половины. Определить сумму элементов каждого столбца левой половины и сумму элементов...

Определить для каждого четного столбца максимальный элемент - C++
Помогите составить программу для задачи: &quot;Дан двумерный массив из 5 строк и 6 столбцов. Определить для каждого четного столбца максимальный...

Первый элемент каждого четного столбца заменить средним арифметическим - C++
помогите решить пожалуйста, завтра модуль!!!!=) Задана матрица A(n,n). Первый элемент каждого четного столбца заменить средним...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
15.02.2010, 13:15
Ответ Создать тему
Опции темы

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