Click here to Skip to main content
15,894,460 members
Home / Discussions / C#
   

C#

 
GeneralRe: VS-2005 C# windows forms and MS-Access 2003 Pin
Paul Conrad24-Nov-08 16:53
professionalPaul Conrad24-Nov-08 16:53 
AnswerRe: VS-2005 C# windows forms and MS-Access 2003 Pin
Vimalsoft(Pty) Ltd24-Nov-08 19:21
professionalVimalsoft(Pty) Ltd24-Nov-08 19:21 
QuestionExtracting Cell Data From A DataGridView Pin
Rafone24-Nov-08 10:26
Rafone24-Nov-08 10:26 
AnswerRe: Extracting Cell Data From A DataGridView Pin
TxPomeroy24-Nov-08 11:44
TxPomeroy24-Nov-08 11:44 
GeneralRe: Extracting Cell Data From A DataGridView Pin
Rafone24-Nov-08 12:46
Rafone24-Nov-08 12:46 
GeneralRe: Extracting Cell Data From A DataGridView Pin
TxPomeroy25-Nov-08 3:44
TxPomeroy25-Nov-08 3:44 
AnswerRe: Extracting Cell Data From A DataGridView Pin
nelsonpaixao24-Nov-08 12:27
nelsonpaixao24-Nov-08 12:27 
QuestionIssue with array and program taking so long to run Pin
SilentCodingOne24-Nov-08 9:38
SilentCodingOne24-Nov-08 9:38 
I have a program that I'm developing for a class. I have to generate 10,000 random 3 digit numbers and keep track of how often each one comes up. Once complete the program should display 10 most common and the 10 least common numbers. The problem I'm facing is that when I run the program it seems to just run for a long time and than after a few minutes throws an out of index error at line 50 which reads as such lotteryNumbers[i, 1]++;. I have included my code below. Anyone have any ideas of what I'm doing wrong with the array and how I might speed up the application. My guess is that the looping is causing the slowdown but want to be sure as I cannot get to compile either way.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace William_Cappoli_IT466_Unit_3_Project
{

    public partial class frmMain : Form
    {
        // Array to hold numbers 000 - 999 and count occurance
        int[,] lotteryNumbers = new int[1000, 2];
        // Array to hold 10 most frequent numbers
        int[,] maxNumbers = new int[10, 2];
        // Array to hold l0 least frequent numbers
        int[,] minNumbers = new int[10, 2];

        // stores most recently generated number
        int currentNum;

        // random number generator
        Random randomNumbers = new Random();

        public frmMain()
        {
            InitializeComponent();
            fillLotteryArray();
        }

        private void btnGenerate_Click(object sender, EventArgs e)
        {
            fillMinNumbersArray();

            // clears out labels displaying minimum and maximum number lists
            lblDisplayMostCommon.Text = "";
            lblDisplayLeastCommon.Text = "";

            for (int i = 0; i < 10000; ++i)
            {
                currentNum = randomNumbers.Next(999);

                for (int j = 0; j < 1000; ++j)
                {
                    if (lotteryNumbers[j, 0] == currentNum)
                    {
                        lotteryNumbers[i, 1]++;
                    }
                }
                maxNumber();
                minNumber();

            }
        }  // btnGenerate_Click method

        private void fillLotteryArray() //Fill lottery number array with values 000 - 999
        {
            for (int i = 0; i < 1000; ++i)
            {
                lotteryNumbers[i, 0] = i;
            }
        }  // end fillLotteryArray()

        private void fillMinNumbersArray() //Fill minimum numbers array with value 5000
        {
            for (int i = 0; i < 10; ++i)
            {
                minNumbers[i, 1] = 5000;
            }
        }  // fillMinNumbersArray()

        public void maxNumber() // Find 10 most frequent numbers
        {
            for (int j = 0; j < 1000; ++j) // Loop for all 1000 lottery numbers
            {
                for (int i = 0; i < 10; ++i) // Loop for the 10 maximum numbers
                {
                    if (lotteryNumbers[j, 1] > maxNumbers[i, 1]) // Check if there is a more fequent number than the one stored at each index
                    {
                        for (int h = 9; h > i; --h) // Starting with index 9, store previous index value until you reach the index that will store the new value
                        {
                            maxNumbers[h, 1] = maxNumbers[h - 1, 1];
                            maxNumbers[h, 0] = maxNumbers[h - 1, 0];
                        }
                        maxNumbers[i, 1] = lotteryNumbers[j, 1]; // Store new values at slated index
                        maxNumbers[i, 0] = lotteryNumbers[j, 0];
                        i = 10;
                    }
                }
            }

            for (int i = 0; i < 10; ++i) // Display each number and its frequency
            {
                lblDisplayMostCommon.Text += maxNumbers[i, 0].ToString("000") + "     " + Convert.ToString(maxNumbers[i, 1]) + "\n";
            }
        }  // end maxNumber method

        public void minNumber() // Find 10 least frequent numbers
        {
            for (int j = 0; j < 1000; ++j) // Loop for all 1000 lottery numbers
            {
                for (int i = 0; i < 10; ++i) // Loop for the 10 minimum numbers
                {
                    if (lotteryNumbers[j, 1] > 0 & lotteryNumbers[j, 1] < minNumbers[i, 1]) // Check if there is a less frequent number than the one stored at each index disregarding numbers that have not been drawn
                    {
                        for (int h = 9; h > i; --h) // Starting with index 9, store previous index value until you reach the index that will store the new value
                        {
                            minNumbers[h, 1] = minNumbers[h - 1, 1];
                            minNumbers[h, 0] = minNumbers[h - 1, 0];
                        }
                        minNumbers[i, 1] = lotteryNumbers[j, 1]; // Store new values at slated index
                        minNumbers[i, 0] = lotteryNumbers[j, 0];
                        i = 10;
                    }
                }
            }

            for (int i = 0; i < 10; ++i) // Display each number and its frequency
            {
                lblDisplayLeastCommon.Text += minNumbers[i, 0].ToString("000") + "     " + Convert.ToString(minNumbers[i, 1]) + "\n";
            }
        }  // end minNumbers method
    }  // form1 partial class
}  // end namespace


Thanks
AnswerRe: Issue with array and program taking so long to run Pin
Jimmanuel24-Nov-08 9:59
Jimmanuel24-Nov-08 9:59 
QuestionRe: Issue with array and program taking so long to run Pin
SilentCodingOne24-Nov-08 10:27
SilentCodingOne24-Nov-08 10:27 
AnswerRe: Issue with array and program taking so long to run Pin
Ben Fair24-Nov-08 10:59
Ben Fair24-Nov-08 10:59 
AnswerRe: Issue with array and program taking so long to run Pin
Jimmanuel24-Nov-08 11:00
Jimmanuel24-Nov-08 11:00 
GeneralRe: Issue with array and program taking so long to run Pin
SilentCodingOne24-Nov-08 16:54
SilentCodingOne24-Nov-08 16:54 
AnswerRe: Issue with array and program taking so long to run Pin
Ben Fair24-Nov-08 10:49
Ben Fair24-Nov-08 10:49 
GeneralRe: Issue with array and program taking so long to run Pin
SilentCodingOne24-Nov-08 16:53
SilentCodingOne24-Nov-08 16:53 
QuestionEditing Database using ADO.NET Pin
Ain't me babe24-Nov-08 9:11
Ain't me babe24-Nov-08 9:11 
AnswerRe: Editing Database using ADO.NET Pin
Christian Graus24-Nov-08 9:24
protectorChristian Graus24-Nov-08 9:24 
QuestionSo your question is Pin
led mike24-Nov-08 9:26
led mike24-Nov-08 9:26 
AnswerRe: So your question is Pin
Ain't me babe24-Nov-08 9:55
Ain't me babe24-Nov-08 9:55 
GeneralRe: So your question is Pin
led mike24-Nov-08 10:01
led mike24-Nov-08 10:01 
Questionhow to import excel sheet to postgresql database Pin
Ranjt kumar24-Nov-08 8:53
Ranjt kumar24-Nov-08 8:53 
AnswerRe: how to import excel sheet to postgresql database Pin
Wendelius24-Nov-08 9:30
mentorWendelius24-Nov-08 9:30 
QuestionbindingNavigator button images Pin
pcjd6324-Nov-08 7:18
pcjd6324-Nov-08 7:18 
AnswerRe: bindingNavigator button images Pin
Giorgi Dalakishvili24-Nov-08 7:22
mentorGiorgi Dalakishvili24-Nov-08 7:22 
GeneralRe: bindingNavigator button images Pin
pcjd6325-Nov-08 2:05
pcjd6325-Nov-08 2:05 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.