57 / 103
Aug 2014

include

int main(void)
{
int i[5],k;

for(k=0;k<=4;k++)
{
scanf("%d",&i[k]);
}

for(k=0;k<=4;k++){
if(i[k]!=42)
{printf("%d\n",i[k]);}
else break;	}return 0;

}

Hi Folks,

For the users that have most recently posted in this topic. Welcome!

Everything that you output will be considered for the answer, so this will cause WA.

cout << "enter the numbers" << endl;

Please use code tags when posting code (see the nice box around the code above?)

I see all of you assuming that there will be a certain number of inputs. djs1234 assumes that it will be less than or equal to 20. This is not true. The problem states that you should continue to take input until it reads 42, it does not say if there will be 5, 100, 10000000 numbers in the input.

while not done
  read input
  if number = 42 then done
  else print number
end while

include

using namespace std;
main()
{
int a[10], n=5, c;
cin >>n;
for(c=0;c {
cin >>a[c];
}
cout <<"the output is :- "<<"\n";
for(c=0;c {
if(a[c]!=42)
{
cout << a[c]<< '\n';
}
else
{
return 0;
}
};
return 0;
}

what the hell is wrong !!!
why it has not been accepted ... it is succesfully running in my compiler

Welcome! Please use code tags when posting code.

When you submit code to the judge, EVERYTHING that you output is considered for the answer. This line of code alone will fail your solution:

cout <<"the output is :- "<<"\n";

Once you have solved that you will then likely get a Runtime Error (SIGSEGV).
Nowhere in the problem statement does it say how many numbers there are in the input. There might be 2, there might be 100, there might be 1000000000. Because this is unknown you cannot store the input in memory. Also, the first number in the input is not the number of inputs to follow (n).

The information above makes this incorrect.

int a[10], n=5, c;
cin >>n;
for(c=0;c<n;c++)
{
cin >>a[c];
}

Please post back if you still have questions.

i have erased the cout <<"the output is:-" and cin>>n;
but still i m not understanding if the no of input integers have not been specified ... how the compiler will understand when he had to stop taking inputs
it is still showing wrong answer

The problem statement tells you to stop reading input after reading 42.

Please post your updated code.

while not done
   Read a number
   If number is 42 
      Done
   Else
      Print number

include

using namespace std;
main()
{
int a[10], n=5, c;
for(c=0;c {
cin >>a[c];
}
for(c=0;c {
if(a[c]!=42)
{
cout << a[c]<< '\n';
}
else
{
return 0;
}
};
return 0;
}

even if i made it to stop after reading 42 ... i'm unable to remove 'n' or the limit of for loop ... it needs an upper limit to be defined. for(c=0; ???;c++)

Or you could use:
for(scanf("%d",&c); c != 42; scanf("%d",&c))

#include <iostream>
using namespace std;
int main(){
int a = 0;
    while(a <= 100)
{
cin >> a;
if (a == 42){

break;
}
else {

cout << a << "\n";

}
}
}

While Delshire's code does work and gets AC, it has one interesting quirk.

while(a <= 100)

It is given in the problem statement that the numbers "are integers of one or two digits" so this works fine. It would be more acceptable to see:

while(true)

or, since it is given that there is always a 42 in the input statement:

while(a != 42)

This last segment also removes the need for the extra break, giving the loop a single exit point.

#include <iostream>
using namespace std;
int main() {
	int a = 0;
	while(a != 42) {
		cin >> a;
		if(a != 42)
			cout << a << endl;
	}
}

Hello! Thanks for the quick reply, i brought another piece of code, a little more 'formal' i think:

#include <iostream>
using namespace std;
void displayOutput(int myArray[], int qOfNumbers);
int main() 
{
int inputValues[100] = {};
for(int i = 0; inputValues[i] < 100; i++)
	{
		int holder;
		cin >> holder;
		inputValues[i] = holder; 
		if (inputValues[i] == 42){
		displayOutput(inputValues, i);
		break;
		}
    }
}
void displayOutput(int myArray[], int qOfNumbers)
{
	for(int a = 0; a < qOfNumbers; a++)
	{
		cout << myArray[a] << "\n";
	}
}

int inputValues[100] = {};

This is scary. There is nothing in the problem statement that tells you a specific constraint on the number of inputs in the test case. While it does work in this case, in a normal setting you would run the risk of buffer overrun.

So i should go with:

int inputValues[100] = {0};

Thanks for the reply.

No. You have declared an array of 100 elements. If there are 105 elements in the input then you have a serious problem.

Ok so i should limit the input entry so 'they' can not enter more than 99 values, right?

No. Nowhere in the problem statement does it declare what the maximum amount of numbers to be input is. Because there is no constraint you cannot safely declare an array.

If a constraint were given then it would not be your responsibility to enforce it.

10 months later

#include<iostream>
using namespace std;
int main()
{
   int a[10],i;
   for(i=0;i<5;i++)
     cin>>a[i];
   for(i=0;i<5;i++)
   {
       if(a[i]==42)
        break;
      cout<<"\n"<<a[i];
   }
}

I dont know why my code is not working..its giving the input and output perfectly..Kindly help....