首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我想把矩阵中的数字加起来

我想把矩阵中的数字加起来
EN

Stack Overflow用户
提问于 2022-08-01 01:26:43
回答 2查看 70关注 0票数 0

我希望每一列的矩阵中的数字之和加起来,试着用同一个musici+1+=musici的不同变体来做这个,但是它不起作用,所以程序基本上把3分分配给用户输入的第一个数字作为他最喜欢的歌曲,第二首歌得到2分,第三个1分,我想在最后的矩阵中总结参与者的所有点,并给出总数。

代码语言:javascript
复制
#include <stdio.h>
#include <stdlib.h>

int main()

{   int num=0, pers=0;

    int i,j, k;

    int votos=0;

    printf("Digite la cantidad de personas:");

    scanf("%d", &pers);

    float music[pers+1][10];

    for(i=0;i<pers+1;i++){

       for(j=0;j<10;j++){
        music[i][j]=0;
       }
    }

for(i=0;i<pers;i++){

  printf("Participante %d :\n",i+1);

       for(k=1;k<=3;k++){

         printf("Digite el numero de sus 3 canciones favoritas %d:\n",k);

          scanf("%d",&num);

           for(j=0;j<9;j++){
             if (k==1){
              music[i][num-1]=3;
            }
               if (k==2){
                music[i][num-1]=2;
              }
               if (k==3){

                music[i][num-1]=1;
              }

               music[10][j]+=music[i][j];
       }
    }
}
    for(i=0;i<pers+1;i++){
       for(j=0;j<10;j++){
        printf("%.2f\t",music[i][j]);
       }
       printf("\n");
    }
        return 0;
     }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-08-01 02:46:26

对于这些问题,GDB是您的朋友。您可以安装交互式调试器并逐行遍历代码,查看矩阵对某些输入的值。

如果这样做,您可能已经看到您正在访问矩阵的第10行。即使pers被初始化为3。

还有一个问题是,当音乐值被初始化时,您就开始对它们进行求和(导致计算过多)。

代码语言:javascript
复制
  for (i = 0; i < pers; i++)
  {
    printf("Participante %d :\n", i + 1);
    for (k = 1; k <= 3; k++)
    {
      printf("Digite el numero de sus 3 canciones favoritas %d:\n", k);
      scanf("%d", &num);
      if (k == 1)
      {
        music[i][num - 1] = 3;
      }
      if (k == 2)
      {
        music[i][num - 1] = 2;
      }
      if (k == 3)
      {
        music[i][num - 1] = 1;
      }
    }
  }

  for(j = 0 ; j < 10; j++)
  {
    for (i = 0; i < pers+1; i++)
        music[pers][j] += music[i][j];
  }

我希望这段代码不会完全解决您的问题,因为了解gdb并学习如何与代码进行交互并了解其偏离您预期的地方对您是有好处的。

它也将有助于按照帕迪的建议,并解释你的输入和输出应该是什么样子。

票数 0
EN

Stack Overflow用户

发布于 2022-08-01 02:04:02

试着用这个代码来总结一下

代码语言:javascript
复制
#include <stdio.h>
#include <stdlib.h>

int main(){ 
int num=0, pers=0;

int i,j, k;

int votos=0;

printf("Digite la cantidad de personas:");

scanf("%d", &pers);

float music[100][100];
float sum[100][100];

for(i=0;i<pers+1;i++){

   for(j=0;j<10;j++){
    music[i][j]=0;
   }
}

for(i=0;i<pers;i++){

printf("Participante %d :\n",i+1);

   for(k=1;k<=3;k++){

     printf("Digite el numero de sus 3 canciones favoritas %d:\n",k);

      scanf("%d",&num);

       for(j=0;j<9;j++){
         if (k==1){
          music[i][num-1]=3;
        }
           if (k==2){
            music[i][num-1]=2;
          }
           if (k==3){

            music[i][num-1]=1;
          }

           sum[i][j]+=music[i][j];
       }
    }
}
for(i=0;i<pers+1;i++){
   for(j=0;j<10;j++){
    printf("%.2f\t",sum[i][j]);
   }
   printf("\n");
}
    return 0;
 }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73188082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档