Solved

need help with a loop and aray

Posted on 2004-10-19
3
258 Views
Last Modified: 2010-04-01
i neeed help writting a program that asks the user to input 10 integers tests to make sure it is an integer and assorts it in assending order if they ener a invalid number ask them to reenter it

i need help with this and it is urgent so anyone that can help me with this i would gatelly appreciate it

maybe some hints or some code on how i should go about this

thanks
ted
0
Comment
Question by:tedschnieders
  • 2
3 Comments
 
LVL 86

Expert Comment

by:jkr
ID: 12349570
#include <list>
#include <iostream>
using namespace std;

int ReadInt () {

    int n;
    string str;
      while (1) {

        cout << "Enter an integer: " << endl;

          getline(cin,str);

        char* pc;
            n = (int) strtol(str.c_str(),&pc,10);

            if (*pc) { // conversion error, not a valid int

                cout << "Invalid number" << endl;

            } else break; // terminate loop
      }

      return n;
}

int main () {

    list<int> lst;
    int n;

      for ( int i = 0; i < 10; ++i) {

          n = ReadInt ();

            lst.push_back(n);
      }

      lst.sort();

      for ( list<int>::iterator it = lst.begin(); it != lst.end; ++it) {

          cout << *it << endl;
      }
}
0
 

Author Comment

by:tedschnieders
ID: 12349737
thank you for responding so quickly

i want them to enter one number at a time and store them in a array 0 - 9
then i want to spit them back out in acccending orplease help me
0
 
LVL 86

Accepted Solution

by:
jkr earned 500 total points
ID: 12349889
Oh, in this case, you could use

#include <iostream>
#include <string>
#include <stdlib.h>
using namespace std;

int compare( const void *arg1, const void *arg2 ) {

    int n1, n2;
      
      n1 = (int) arg1;
      n2 = (int) arg2;

      if ( n1 < n2) return -1;

      if ( n1 > n2) return 1;

      return 0;
}

int ReadInt () {

    int n;
    string str;
      while (1) {

        cout << "Enter an integer: " << endl;

          getline(cin,str);

        char* pc;
            n = (int) strtol(str.c_str(),&pc,10);

            if (*pc) { // conversion error, not a valid int

                cout << "Invalid number" << endl;

            } else break; // terminate loop
      }

      return n;
}

int main () {

    int arr[10];
    int n;

      for ( int i = 0; i < 10; ++i) {

          arr[i]= ReadInt ();
      }

      qsort(arr,10,sizeof(int),compare);

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

          cout << arr[i] << endl;
      }
}
0

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

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.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Unlike C#, C++ doesn't have native support for sealing classes (so they cannot be sub-classed). At the cost of a virtual base class pointer it is possible to implement a pseudo sealing mechanism The trick is to virtually inherit from a base class…
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…
The viewer will learn how to use the return statement in functions in C++. The video will also teach the user how to pass data to a function and have the function return data back for further processing.
The viewer will be introduced to the technique of using vectors in C++. The video will cover how to define a vector, store values in the vector and retrieve data from the values stored in the vector.

829 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