Explore

Edit

Edit

# Cognizant Automata Fix questions | Cognizant Automata Fix pattern

Published on 07 Mar 2020

Cognizant has updated its pattern recently. Cognizant Automata Fix is a section in the cognizant on-campus recruitment process. Since Cognizant conducts its online test using AMCAT platform, Amcat Automata fix questions will be asked in this new section. This article provides more details about Automata Fix pattern, sylabus and sample questions.

## What is Cognizant Automata Fix?

• Automata Fix is the new assessment that cognizant has included as part of its online test. It checks the candidate's computer programmer's ability to debug an erroneous code and fix it.
• The test provides a set of programs to the candidate, where they have to either debug them or right new functionality based on the given functions and code.
• It tests the candidates skill of being able to understand code written by someone else, be able to find bugs and also use the code to implement new functionality. This assessment is available across multiple programming languages.

Know Cognizant Latest Test Pattern and Syllabus

## Cognizant Automata Fix Questions Pattern

Type of QuestionDescription
LogicalThe candidate is required to fix all the logical errors
in the given code.
CompilationCandidate needs to correct the syntax of the given code
without changing its logic.
Code ReuseCandidate needs to compare the given code by reusing
existing function

Questions of Automata Fix may come from the below concepts. Also, the difficulty level of sections is given below.

• Logical questions:This checks the various logical concepts like Conditions, looping etc.
• Compilation questions:This checks the candidate basic knowledge of syntax and language-specific concepts.
• Code Reuse questions:This is a bit tougher than the logical and compilation based questions. The candidate is required to complete the code using the predefined structure or functions.

## Cognizant Automata Fix Questions with Solutions

1) Check for syntax error/ logical error and correct the error to get the desired output.

Given n, print from n to 0

int main()
{
int n;
scanf("%d", &n);
unsigned int i = n;
while(i >= 0)
{
printf("%dn", i);
i--;
}
return 0;
}


Input: 4

Output: Infinite loop

unsigned int i = n; unsigned integer ranges from 0 to 65535, which will be taken in the cyclic order.Soi-- will keep repeating in a cyclic way. The loop will never be terminated. So it should be written as int i = n;

2) Find the factorial of a given number.

int main()
{
long int fact = 1, n, i;
scanf("%d", &n);

for(i =1; i <= n; i++)
{
fact = fact * i;
}
printf("%d", fact);
return 0;
}


Input: 20

Output: -2102132736

The fact and n are declare d as long int, so in scanf and printf%ld should be used in place of %d.

3) Check whether the below program print the below pattern

1111

222

33

void main()
{
int i, j, n;
scanf("%d", &n);
for(i = 1; i<n; i++)
{
for(j = 1; j<n; j++)
{
printf("%d", i);
}
printf("n");
}
}


Input: 3

Output:

111

222

333

The inner for loop has to be written in this way: for(j = i-1; j<n; j++)

4) Find the greatest of three numbers.

int main()
{
int num1, num2, num3;
scanf("%d %d %d", &num1,&num2,&num3);
if (num1 > num2) && (num1 > num3)
{
printf("%d", num1);
}
elseif(num2>num3)
{
printf("%d", num2)
}
else
{
printf("%d", num3);
}
return 0;
}


if (num1 > num2) && (num1 > num3) it has to be written as if ((num1 > num2) && (num1 > num3)) and this line else if (num2>num3) should be rewritten as else if (num2>num3)

5) Fix the error, recompile and match against the output provided.

int main(void)
{
printf("This is a "buggy" programn");
return 0;
}


Corrected program:

int main(void)

{

printf("This is a "buggy" program n");

return 0;

}

6) Code reuse:Convert Binary to Decimal by using the existing function.

voidbinarytodecimal(number)
{
}
void main()
{
int num;
scanf("%d", &num);
printf(%d, binarytodecimal(num);
}


voidbinarytodecimal(number)
{
int dval=0, base=1, rem;
while(number > 0)
{
rem = number % 10;
dval = dval + rem * base;
num = number / 10;
base = base * 2;
}
return dval;
}


7) Print the prime numbers from an array up to given value n by using existing function.

int isprime(int num)
{
}
int main()
{
int n, m, arr[100], size=0, i;
scanf("%d", &n);
for(m = 2; m <= n; m++)
{
if(isprime(m))
{
arr[size++]= m;
}
}
for(i = 0; i < size; i++)
{
printf("%dn", arr[i]);
}
return 0;
}


int isprime(int num)
{
int i;
int isprime = 1;
for(i = 2; i <= num / 2; i++)
{
if(num % i == 0)
{
isprime = 0;
break;
}
}
return isprime;
}