从Matrix - C编程计算列总计

时间:2018-04-02 00:38:06

标签: c arrays matrix sum percentage

正如标题所暗示的那样,在此计划中获取列总计和百分比时遇到了一些麻烦。我花了几个小时提取代码并尝试逐步实现,但却失败了。 C不是我的强项。

该计划应该能够做到以下几点:

一个。显示包含行和列的适当标签的表。

湾计算并显示每位候选人收到的总票数和投票总票数的百分比。

℃。如果任何一位候选人获得超过50%的选票,该计划应显示一条消息,宣布该候选人为获胜者。

d。如果没有候选人获得50%的选票,该计划应显示一条消息,宣布获得最高票数的两名候选人之间的决选;两位候选人应以姓名识别。

即使用显示的数据运行程序一次,使用候选C在Precinct 4中仅接收108票,运行一次。

我的程序添加行总计并打印“总计”列。我想弄清楚如何添加列总计并将其传递给每个候选人的“总计”列。

#include <stdio.h>

int main()
{
   int votes[5][4]={
      192,48,206,37,
      147,90,312,21,
      186,12,121,38,
      114,21,408,39,
      267,13,382,29};

   char cand[4]={'A','B','C','D'};

   int row_totals[5];
   int col_totals[4];

   int total_votes;

   float percent[5];

   int row,col;


   int total=0;
   for(row=0;row<=4;row++)
   {
      row_totals[row]=0;

      for(col=0;col<=3;col++)
      {
         row_totals[row] += votes[row][col];
         total+=votes[row][col];
      }
   }

   printf("          Candidate     Candidate   Candidate    Candidate   Total   Percent\n");
   printf(" Precinct      A            B           C            D\n");

   for(row=0;row<=4;row++)
   {
      printf("%6d",row+1);
      for(col=0;col<=3;col++)
      {
         printf("%12d",votes[row][col]);
      }
      printf("%11d",row_totals[row]);
      percent[row]=(double)(row_totals[row]*100)/total;
      printf("\t%.2f\n",percent[row]);

   }


   int i;
   double first=percent[0];
   double sec=percent[0];
   int maxVal,second_big;
   for(i=0;i<4;i++)
   {
      if(first>percent[i])
      {
         first=percent[i];
         maxVal=i;
      }


   }
   int j;
   for(j=0;j<4;j++)
   {
      if(percent[j]>sec && percent[j]!=sec)
      {
         sec=percent[j];
         second_big=j;
      }

   }
   if(first>50)
   {
      printf("%c is the winner.\n",cand[maxVal]);
   }

   else if(sec<=50)
   {
      printf("%c and %c are in a runoff.\n",cand[maxVal],cand[second_big]);
   }
   return 0;
}

1 个答案:

答案 0 :(得分:1)

for (row = 0; row <= 4; row++)
{
    printf("%6d", row + 1);
    for (col = 0; col <= 3; col++)
    {
        printf("%12d", votes[row][col]);
    }
    printf("%11d", row_totals[row]);
    percent[row] = (row_totals[row] * 100) / total;
    printf("\t%.2f\n", percent[row]);

}

此处,您正在处理5个元素0...4,但percent仅定义为包含4个元素0...3

    double percent[4];

将循环条件更改为<=3或增加percent数组的大小。