Solved

Run-time Check Failure #2

Posted on 2009-05-03
4
252 Views
Last Modified: 2012-05-06
I'm new to C++ and my program works, but I keep getting the following error:

Run-time check failure #2 - stack around the variable "ranNumArray" was corrupted.

I'm not sure why this is happening, can some please help!  Thanks a lot.
int main (void)

{
 

int ranNumber;

int ranNumArray[100];

int i;
 

int numFind;

int arrayPos;

int foundNum = 0;
 

  /* initialize random seed: */

  srand (1);
 

  /* generate secret number: */

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

  ranNumber = rand() % 100 + 1;

  ranNumArray[i] = ranNumber;

  cout<<i<<" "<<ranNumArray[i]<<endl;	

}
 

     int max = ranNumArray[0]; 
 

     for(int i = 1; i<101; i++)

     {

          if(ranNumArray[i] > max)

                max = ranNumArray[i];

     }

 

 cout<<"The Max is "<<max<<endl;

 

 cout<<"Please enter a number to find:";

 cin>>numFind;   

 

     for(int x = 0; x<101; x++)

     {

          if(ranNumArray[x] == numFind) {

          		cout<<"The position of your number is "<<x<<endl;

                foundNum = 1;

          }
 

     }

  

  if(foundNum == 0){

  	cout<<"Not Found";

    }

     

return 0; 

}

Open in new window

0
Comment
Question by:trifecta2k
4 Comments
 
LVL 40

Accepted Solution

by:
mrjoltcola earned 500 total points
ID: 24292547
Your problems are the for loops, looping 1 too many. It goes past the end of the array. Array of 100 means 0 - 99 in C++
for(i=0; i< 101; i++)  // 101 slots, one too many
 

for(int x = 0; x<101; x++) // 101 slots, one too many
 
 

Instead use

//

for(i=0; i< 100; i++)  // 100 slots
 

for(int x=0; x< 100; x++)  // 100 slots

Open in new window

0
 
LVL 39

Expert Comment

by:itsmeandnobodyelse
ID: 24294096
Alternatively to that mrjoltcola said, you could do


     for(int i = 1; i<=100; i++)
     {
          if(ranNumArray[i-1] > max)
          ...

That way your loop counter is 1-based what might give some benefits if using it as an ID-number.

But actually this is more error-prone than that mrjoltcola suggested.

>>>>      for(int i = 1; i<101; i++)

Never use 101 as upper boundary if the size is 100. That is very error-prone even if using a 1-based counter.

Generally, if using fixed-sized arrays you might consider the following:

 for(int i = 0; i < sizeof(ranNumArray)/sizeof(ranNumArray[0]); i++)

With that you could change the size and type of array without having to change the for loop as well.

0
 

Expert Comment

by:emilmgeorge
ID: 24295905
int main (void)
{
 
int ranNumber;
int ranNumArray[100];
int i;
 
int numFind;
int arrayPos;
int foundNum = 0;
 
  /* initialize random seed: */
  srand (1);
 
  /* generate secret number: */
for(i=0; i< 100; i++) {
  ranNumber = rand() % 100 + 1;
  ranNumArray[i] = ranNumber;
  cout<<i<<" "<<ranNumArray[i]<<endl;  
}
 
     int max = ranNumArray[0];
 
     for(int i = 1; i<100; i++)
     {
          if(ranNumArray[i] > max)
                max = ranNumArray[i];
     }
 
 cout<<"The Max is "<<max<<endl;
 
 cout<<"Please enter a number to find:";
 cin>>numFind;  
 
     for(int x = 0; x<100; x++)
     {
          if(ranNumArray[x] == numFind) {
                        cout<<"The position of your number is "<<x<<endl;
                foundNum = 1;
          }
 
     }
 
  if(foundNum == 0){
        cout<<"Not Found";
    }
     
return 0;
}
0
 
LVL 5

Author Closing Comment

by:trifecta2k
ID: 31577439
Thanks, that worked perfectly.  
0

Featured Post

How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

Join & Write a Comment

This article shows you how to optimize memory allocations in C++ using placement new. Applicable especially to usecases dealing with creation of large number of objects. A brief on problem: Lets take example problem for simplicity: - I have a G…
Go is an acronym of golang, is a programming language developed Google in 2007. Go is a new language that is mostly in the C family, with significant input from Pascal/Modula/Oberon family. Hence Go arisen as low-level language with fast compilation…
The goal of the tutorial is to teach the user how to use functions in C++. The video will cover how to define functions, how to call functions and how to create functions prototypes. Microsoft Visual C++ 2010 Express will be used as a text editor an…
The goal of the video will be to teach the user the concept of local variables and scope. An example of a locally defined variable will be given as well as an explanation of what scope is in C++. The local variable and concept of scope will be relat…

747 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

7 Experts available now in Live!

Get 1:1 Help Now