DaniWeb IT Discussion Community

DaniWeb IT Discussion Community (http://www.daniweb.com/forums/index.php)
-   C++ (http://www.daniweb.com/forums/forum8.html)
-   -   unix/C++ segmentation fault (http://www.daniweb.com/forums/thread17184.html)

crq Jan 19th, 2005 1:07 am
unix/C++ segmentation fault
 
hi there. i am new to C++ AND unix. this assignment that i have is really really easy, but the specifics of C++ and getting around in Unix is making it really hard and time consuming. i have a really small program that should be working, but i am getting the wrong output AND at the end of the output i get a Segmentation fault.

i have a function called series that is declared and works fine. i have inserted a cout<< to check that the function is working right. but i am still getting the wrong output AND this error. am i doing something illegal? using the function result as the array index? i know i am not telling you much about the code, i am just wondering if there are any GLARING unix or C++ no-nos that anyone sees.

int main (){
  const int MAX_NUM = 60;

  const int MAX_CALLS = 41;

  int num_calls [MAX_CALLS];
 
  int k = 0;

  for(int i=1; i<=MAX_NUM; i++){
      num_calls[i] = 0;
      cout<< series(i) <<endl;
      if ((series (i)) < MAX_CALLS){
        num_calls[series (i)]++;
      }
      else{
        k++;
      }
  }
 
  for(int l=1; l<MAX_CALLS; l++){
      cout<< l << "      " << num_calls[l] <<endl;
  }
 
  cout<< "and " << k << "numbers have series length greater than 40" <<endl;
}

thanks
crq

kc0arf Jan 19th, 2005 1:22 am
Re: unix/C++ segmentation fault
 
Hi,

First, and this is a style thing... I hate it when people place the brace { on the same line as the expression... just does not look nice to me.

Adjusted:


int main ()
{
  const int MAX_NUM = 60;

  const int MAX_CALLS = 41;

  int num_calls [MAX_CALLS];
 
  int k = 0;

  for(int i=1; i<=MAX_NUM; i++)
        {
        num_calls[i] = 0;
        cout<< series(i) <<endl;
        if ((series (i)) < MAX_CALLS)
            {
            num_calls[series (i)]++;
            }
        else
            {
            k++;
            }
        }
 
  for(int l=1; l<MAX_CALLS; l++)
        {
        cout<< l << "      " << num_calls[l] <<endl;
        }
 
    cout<< "and " << k << "numbers have series length greater than 40" <<endl;
}


I notice that you declare main() to be of type INT, and you do not return any number to the OS. I wonder if that is hanging you up.

I would have tried, but you didn't bring along your whole program, and I wasn't about to code it further. I couldn't compile because I had no idea what series is, and at 11:30pm, I am not to creative.

Christian

crq Jan 19th, 2005 1:47 am
Re: unix/C++ segmentation fault
 
THANKS for the style tips. i agree with you. i like lots of spacing in my coding. however, i have been beaten over the head with doing it the exact opposite ....

for(int i=1; i<MAX_CALLS; i++){ h[i]=0} ....
...........

.......
that stuff makes me crazy, but it seems to be the going style where i am. anything else is a bit "novice" or something ... silly, though it may be.

i think i have figured it out, though. i had some uninitialized array stuff that was making my code not work ... and yes i need to check on the number part. either i left it off when i copied and pasted ... or i lost it somewhere in my coding. i am so new at unix, that i don't know how to go to my file, and open it in the editior. all i know how to do is VIEW the file, copy it. then open a text editor window and paste it in there EVERY time i want to make a change after i compile and run ... ARRRRGGGHHH!!

thanks, though.
crq

Narue Jan 19th, 2005 1:34 pm
Re: unix/C++ segmentation fault
 
>I hate it when people place the brace { on the same line as the expression
Get over it. Style issues are a matter of opinion, and you shouldn't push your opinions on other people.

>I wonder if that is hanging you up.
That's legal C++. 0 will be returned by default if the compiler supports that feature from the standard. Of course, if Turbo C++ v.old_as_dirt is the OP's compiler, it's undefined behavior.

>cout<< series(i) <<endl;
What is series? Is it a type? Is it a function? Most likely your problem is in the code that you neglected to post.

sykobag Jan 19th, 2005 1:54 pm
Re: unix/C++ segmentation fault
 
In the unix that I used last semester in school the editor was called "pico" just type that on the command line and the text editor comes up. I don't know if that is standard unix or if it was on the server that I was using but you can always give it a shot.

crq Jan 19th, 2005 1:59 pm
Re: unix/C++ segmentation fault
 
thanks for replying!

i actually found the problem ... and it was a goof-up silly mistake. i was doing things in an array element that hadn't been initalized. i am still in java mode it seems (elements of int arrays are by default initalized to 0). somehow that was producing the segmentation fault. i still don't know what that term means, but it turned out to be something silly. i am so unfamiliar with C++ and with Unix that i was sure my mistake was the result of something that i wouldn't know to do.

oh, series is a function. was declared above. i had tested it and i had the problem isolated to 2 lines because of the cout<< calls that i had going.

thanks for the help .. i am sure i will need more in the coming weeks.

thanks
crq

crq Jan 19th, 2005 2:02 pm
Re: unix/C++ segmentation fault
 
Quote:

Originally Posted by sykobag
In the unix that I used last semester in school the editor was called "pico" just type that on the command line and the text editor comes up. I don't know if that is standard unix or if it was on the server that I was using but you can always give it a shot.

hey, sykobag,

i am using pico too. i type pico and a blank window comes up. the problem that i have is this ... when i quit a session, save my file and want to come back to it. if i log back on and type pico, i get a blank editor. how do i call pico for the file that i want to edit instead of calling a blank window each time?

thanks
crq

sykobag Jan 19th, 2005 2:06 pm
Re: unix/C++ segmentation fault
 
Quote:

Originally Posted by crq
hey, sykobag,

i am using pico too. i type pico and a blank window comes up. the problem that i have is this ... when i quit a session, save my file and want to come back to it. if i log back on and type pico, i get a blank editor. how do i call pico for the file that i want to edit instead of calling a blank window each time?

thanks
crq

at the bottom of the pico window there should be a load from file or something its been a while since i used it but it will load from a file all of the text you edited before

crq Jan 19th, 2005 2:39 pm
Re: unix/C++ segmentation fault
 
Quote:

Originally Posted by sykobag
at the bottom of the pico window there should be a load from file or something its been a while since i used it but it will load from a file all of the text you edited before

SUPER!! i will try that. it would be a real time saver. i have been copying and pasting and opening and closing ... a real pain.

THANKS!

crq

alc6379 Jan 19th, 2005 3:20 pm
Re: unix/C++ segmentation fault
 
if you're opening pico from a command line, couldn't you just type the path to the file as an argument?

pico /path/to/file.c


All times are GMT -4. The time now is 2:20 pm.

Forum system based on vBulletin Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
©2003 - 2009 DaniWeb® LLC