【问题标题】:Transfer from one array to another从一个阵列转移到另一个阵列
【发布时间】:2022-01-13 14:53:35
【问题描述】:

我有一个循环来检查传递的参数可以被哪些数字整除。所有符合此条件的数字都将存储在另一个数组中。我该如何设置?

 #include <stdio.h>


void primfaktorzerlegung(int * zahl, int * ausgabe){

int array_primzahlen[] = {2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97};
int length = sizeof(array_primzahlen)/sizeof(int);
int i = 0;
int j = 0;

for(int k = 0; k<*zahl; k++){
    for( i = length; i>=0; i--){
        
        if(*zahl % array_primzahlen[i] == 0){
           *(ausgabe + j) = array_primzahlen[i];
            j++;
        *zahl = *zahl / array_primzahlen[i];
        
   
        }
        if(*zahl == 2){
            *(ausgabe + j) = array_primzahlen[i];
        }
    }
}
}


int main(void)
{
int ausgabe[10];
int zahl = 8;
primfaktorzerlegung(&zahl, ausgabe);

for(int i = 0; i<10; i++){
printf("%d, ", ausgabe[i]);
 
}
return 0;
}

这是我目前的状态。 “数字” 8 将被分解为其素数,即:2, 2, 2 这也有效,但数组中也存储了完全不同的数字:

 2, 2, 2, 21883, 0, 0, -1385004928, 21883, 738867344, 32765

【问题讨论】:

  • 到目前为止你尝试过什么?
  • 你的意思是像ausgabe[j++] = array_primzahlen[i];这样的东西吗?如果zahl 可以被同一个质数多次整除,预期的行为是什么?
  • 是的,我尝试使用第二个循环存储在 ausgabe 中,但效果不佳
  • 有了for( i = length; i&gt;=0; i--),你就有了UB(未定义的行为)。您从一个 超出 数组末尾的索引开始。你可能想要:for( i = length - 1; i&gt;=0; i--)
  • 您的格式无处不在。请编辑帖子并修复代码格式。

标签: arrays c


【解决方案1】:

可能是这样的:

void primfaktorzerlegung(int zahl, int * ausgabe){

    int array_primzahlen[] = 
        {2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97};
    int length = sizeof(array_primzahlen)/sizeof(int);
    int i = 0;
    int j = 0;

    for( i = length - 1; i>=0; i--){
        if(zahl % array_primzahlen[i] == 0){
        /*Here should be the transfer*/
            *(ausgabe + j) = array_primzahlen[i];
            j++;
        }

    }
}

我不知道您是否希望以相反的顺序存储数字。在这种情况下,您可以在之后反转数组。

【讨论】:

  • 作为旁注,查看函数名称,我才意识到,snake_case 和 CamelCase 不需要以德语存在。 :-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-12-15
  • 2015-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-18
  • 1970-01-01
相关资源
最近更新 更多