Проблемы с использованием массива C - PullRequest
0 голосов
/ 31 мая 2011

Я очень плохо знаком с C. Я хочу добавить два одномерных целых имени массива a[10] b[10]. Я хочу поместить результат в 2-мерный массив c[5][2] как

c[i][j] = a[i]+b[i];

Но если я использую 2 for петли, тогда как я могу получить доступ к a[9], b[9] значению. Поэтому я хочу использовать один цикл for, который выполняет a[i]+b[i] и помещает результат в c[i][j].

Может кто-нибудь сказать мне, как это сделать?

  • Как поместить значение в двумерный массив с помощью цикла for for?
  • Как вывести значение двумерного массива с помощью цикла for for?
  • Пожалуйста, не обращайте внимания на мой английский или форматирование вопросов, поскольку я очень плохо знаю английский.

Ответы [ 4 ]

1 голос
/ 31 мая 2011

если я недооценил вашу проблему, вы можете сделать это:

int col=0; //col counter
int row=0; // row counter
for(int x=0;x<9;x++)
{
   if(col>x/2) // check the end of row
   {
    row++; // increment row
    col=0; // reset col counter
   }
    c[row][col]=a[x]+b[x]; // assignement
   col++;
}
0 голосов
/ 31 мая 2011

Это может помочь (если я правильно понял):

for ( int i = 0 ; i < 10 ; ++i)
{
     c[i%5][i/5] = a[i] + b[i] ;
}
0 голосов
/ 31 мая 2011

Хорошо, так что вам придется использовать два для циклов.Это потому, что если вы попытаетесь реализовать то, что вы хотите, один для вида c[i][j] будет расти равномерно, то есть i всегда будет равняться j.Это становится проблемой, когда вы получаете любое число больше 2, так как это максимальный размер j.Поэтому я бы предложил следующий формат

    int i=0, j=0;
    int a[10], b[10], c[5][2];
      for(i=0; i<10; ++i)
      {
         for(j=0; j<2; ++j)
         {
            a[i]+b[i] = c[i][j];
         }
      }

Поместите свои printf оценки внутри этого или после него, в зависимости от того, как вы этого хотите.Но не забудьте сначала инициализировать ваши массивы значениями, в противном случае они будут печатать мусор.Так что либо используйте scanf и предложите пользователю ввести значения для a[10] и b [10] or else use the format a [10] = {val1, val2, val3 ...} `

Hope I 'был полезным

0 голосов
/ 31 мая 2011

Просто преобразуйте число (от 0 до 9), составляющее индекс для a (или b) в базе 5:

base 10 | base 5
     0 ==> 00
     1 ==> 01
     ...
     4 ==> 04
     5 ==> 10
     6 ==> 11
     ...
     9 ==> 14

, затем используйте каждую из цифр основания-5 в результатедля индексации c


Редактировать: псевдо-пример

for (k = 0; k < 10; k++) {
    b5 = base5(k);         /* when k is 7, b5 becomes 12 */
    c0 = nthdigit(b5, 0);  /* when b5 is 12, c0 becomes 2 */
    c1 = nthdigit(b5, 1);  /* when b5 is 12, c1 becomes 1 */
    c[c1][c0] = a[k] + b[k];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...