Write a program that reads several numbers and prints their increment, i.e. their value added to one.
The input contains several lines, each with a single integer x where - 100 000 000 ≤ x ≤ 100 000 000.
The output should contain several lines each with a single corresponding integer y where y = x + 1.
The number x may be given in the input with leading zeroes. The number y should be given in the output without leading zeroes. Input is terminated by the end-of-file (EOF)
2
123
1000
3
124
1001
inc
functionYour program should be implemented using an inc
function
that receives one integer as argument and returns an integer.
Please refer to the information for the chosen language:
int inc(int x);
inc :: Int -> Int
def inc(x):
int inc(int x);
public static int Inc(int x)
inside a class Program
public static int inc(int x)
inside a public class Inc
function inc(x)
function inc(x)
def inc(x)
(define (triple x) ...)
(define (triple x) ...)
The inc
function should not print anything.
It should just perform the computation and return an integer.
The function and input/output processing
must exist in the same program.
Create a single submission with the function and main program.
If you’re confused, try earning a partial score first.
Specifically for this exercise when using Python, JavaScript, Lua or Ruby,
avoid using sys.exit()
, process.exit()
, os.exit()
or exit
,
as your program is appended with some extra assertions in one of the test sets.
Submit your solution to be graded according to the following list:
inc
functionIf you do not know where to start, read the Computer Science by Example book. First, setup your environment then learn the programming basics. Here are some hints:
Automated judge: Keep in mind that when your program is submitted it will not be run by a human but instead by an automated judge. Instructions should be followed exactly or the judge will not give you a full score.
Your program should not print messages like
Please type a number:
or The increment is:
.
Instead, just print the result
followed by a line break
as in the example output.
Produce output as you go: You do not need to accumulate input and then produce everything at the end. It is enough to produce output as you go. As soon as you read a number write its increment to standard output.
Detecting the end of file. In this exercise, input is terminated by the end-of-file (EOF). Here are ways to detect EOF in C, Python and Haskell:
In C.
The scanf
function returns the numbers of items read from stdin
.
Since this exercise requires you to read a number each line,
you can compare scanf
’s result to one as a while
condition:
while (scanf(...)==1) {
...
}
Which translates to, “while you’re able to read one item from standard input, do …”
In Python.
The pattern for line in sys.stdin:
can be used
to create a loop where a file is processed line by line
until the end-of-file (EOF).
In Haskell.
You can use interact
to declare the main function
and implement your solution as a function from String
to String
:
io :: String -> String
io = ...
main :: IO
main = interact io
EOF is then represented as the nil list constructor (""
or []
)
at the end of the argument String
.
On the terminal, you can simulate the end-of-file (EOF) by holding “Ctrl” and pressing “D”, i.e., Ctrl-D.
Beware of leading zeroes.
C users should beware of leading zeroes.
Use %d
instead of %i
to avoid treating numbers with leading zeroes as octals.
Test your program with 010
, 023
and 035
.
Does it print 11
, 24
and 36
?
Beware of the data types.
Users of Python and dinamically-typed languages beware.
The inc
function will be tested
with proper integer values as its argument
and not with integers encoded in strings.
For example, it will be tested as inc(123)
but never as inc("123")
.
Further information. Sections 4.4. Functions and 4.5. Operators of the Computer Science by Example book
try also: triple
try next: add
Copyright © 2020-2022 Rudy Matela
This text is available under the CC BY-SA 4.0 license.
Originally available on cscx.org/inc