• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 238
  • Last Modified:

form displaying input values and percetages

I have to create a program that accepts intergers and then displays a message box showing the original values, the total, and the percentage each value contibutes to the total. My question is how do I calculate the percentage each value contibutes to the total?
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Text;
 
namespace Chp7Ex2
{
    class Program
    {
        static void Main(string[] args)
        {
            string inValue;
            int total = 0;
            Console.WriteLine("How many values will be entered: ");
            string sSize = Console.ReadLine();
            int arraySize = Convert.ToInt32(sSize);
            int [] input = new int[arraySize];
 
            for (int i=0; i < arraySize; i++)
            {
                Console.Write("Enter number {0}: ", i + 1);
                inValue = Console.ReadLine( );
                input[i] = Convert.ToInt32(inValue);
             }
 
            for (int i = 0; i < arraySize; i++)
            {
               total += input[i];
            }
            MessageBox.Show(total);
        }
    }
}

Open in new window

0
98fatboyrider
Asked:
98fatboyrider
3 Solutions
 
EricTVikingCommented:
100 / Total * Value
0
 
Jaime OlivaresSoftware ArchitectCommented:
you can show you data as:

// after calculating total
string message = "";
for (int i = 0; i < arraySize; i++)
{
       message += string.Format("{0} ({1}%)\r\n", input[i], input[i] * 100 / total);
}
message += string.Format("Total: {0}", total);
MessageBox.Show(message);
0
 
Anurag ThakurTechnical ManagerCommented:
Jaime's solution should work but if there are 3 values 12,12, 12 the % will just show 33% each time as round is not implemented where as it should show 33.33%

i have extended Jaimes solution further to take care of that too
			string inValue;
			int total = 0;
			Console.WriteLine ("How many values will be entered: ");
			string sSize = Console.ReadLine ();
			int arraySize = Convert.ToInt32 (sSize);
			int[] input = new int[arraySize];
 
			for (int i = 0; i < arraySize; i++)
			{
				Console.Write ("Enter number {0}: ", i + 1);
				inValue = Console.ReadLine ();
				input[i] = Convert.ToInt32 (inValue);
			}
 
			for (int i = 0; i < arraySize; i++)
			{
				total += input[i];
			}
			string message = "\r\n\r\n";
			for (int i = 0; i < arraySize; i++)
			{
				message += string.Format ("Input value no {0} : {1} having % contribution ({1}%)\r\n", i, input[i], Math.Round(input[i] * 100.00 / total, 2));
			}
			message += string.Format ("\r\nTotal: {0}", total);
			Console.WriteLine (message);
			
			
			Console.ReadLine();

Open in new window

0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now