Составьте алгоритм и программу для определения номера автомашины - C (СИ)
Формулировка задачи:
Три приятеля были свидетелями нарушения правил дорожного движения. Номер автомобиля - четырехзначное число - никто не запомнил. Из их показаний следует, что номер делиться на 2, на 7 и на 11, в записи номера участвуют только две цифры, сумма цифр номера равна 30. Составьте алгоритм и программу для определения номера автомашины.
Решение задачи: «Составьте алгоритм и программу для определения номера автомашины»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int isValid(char number[])
{ int sum = 0, i = 0, rightSum = 0, rightDigits = 0, count = 0;
char a,b;
for( ;i<4; i++)
sum += (int)number[i] - 48;
if(sum == 30)
rightSum = 1;
a = number[0];
count++;
for(i = 2; i<4; i++)
{ if(count == 1 && number[i] != a)
{ b = number[i];
count++;
}
else if(count == 2 && number[i] != a && number[i] != b)
count++;
}
if(count<=2)
rightDigits = 1;
return rightSum && rightDigits;
}
int main()
{ char buf[6];
int a = 2*7*11, i = 2, check;
for(;;i++)
{ check = a*i;
itoa(check, buf, 10);
if(strlen(buf) < 4)
continue;
else if(strlen(buf)==4 && isValid(buf))
{ printf("Number: %s", buf);
break;
}
}
getchar();
return 0;
}
Объяснение кода листинга программы
- В функции isValid проверяется, является ли введенный номер автомобиля допустимым.
- В функции main создается массив buf, в который с помощью функции itoa преобразуется число, полученное в результате умножения числа a на текущее значение переменной i.
- Если длина строки, полученной из buf, меньше 4, то продолжается проверка следующего числа.
- Если длина строки равна 4 и функция isValid возвращает значение true, то выводится найденный номер автомобиля и программа завершается.