【问题标题】:Calculating Column Totals from Matrix - C Programming [closed]从矩阵计算列总计 - C 编程 [关闭]
【发布时间】:2018-09-11 05:43:29
【问题描述】:

正如标题所暗示的那样,我在获取要在此程序中计算的列总数和百分比时遇到了一些严重问题。我花了几个小时提取代码并尝试逐步实现,但失败得很惨。 C 不是我的强项。

该程序应该能够执行以下操作:

一个。用适当的标签显示表格的行和列。

b.计算并显示每位候选人获得的总票数和占总票数的百分比。

c。如果任何一位候选人获得了超过 50% 的选票,则程序应显示一条消息,宣布该候选人为获胜者。

d。如果没有候选人获得 50% 的选票,程序应显示一条消息,宣布在获得最高票数的两名候选人之间进行决选;两位候选人应通过他们的字母名称来识别。

e。使用显示的数据运行程序一次,并在候选人 C 在选区 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;
}

【问题讨论】:

  • printf("c is the winner.\n",cand[maxVal]); - 开头应该是 %c。无论如何,你的问题到底是什么?您看到打印出来的值是什么?您期望什么?
  • 我的程序添加行总计并将它们打印到“总计”列。我正在尝试弄清楚如何添加列总计并将其传递给每个候选人的“总计”列。

标签: c arrays matrix sum percentage


【解决方案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];

要么将循环的条件更改为&lt;=3,要么增加percent 数组的大小。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-12
    相关资源
    最近更新 更多