Сделал 13 усовершенствованную с иным заданием
This commit is contained in:
parent
5852a9f034
commit
3f5c6299fc
11 changed files with 146 additions and 5 deletions
23
WorkingArrays/13ExDeluxe/equal.c
Normal file
23
WorkingArrays/13ExDeluxe/equal.c
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
#include "equal.h"
|
||||
|
||||
int canFixArray(double * numbers) {
|
||||
unsigned short indexNonEqualNumber = 0, indexSecondNonEqualNumber = 0, numberDiffernce = 0, length = (int)numbers[0];
|
||||
|
||||
for (int i = 2; i < length; ++i) {
|
||||
if (!isEqual(numbers[i - 1], numbers[i])) {
|
||||
numberDiffernce++;
|
||||
if (!indexNonEqualNumber) indexNonEqualNumber = i;
|
||||
else if (!indexSecondNonEqualNumber) indexSecondNonEqualNumber = i - 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (numberDiffernce > 2) return -1;
|
||||
else if (numberDiffernce == 2 && (!isEqual(numbers[indexNonEqualNumber - 1], numbers[length - 1]) || indexNonEqualNumber != indexSecondNonEqualNumber)) return -2;
|
||||
else if (numberDiffernce == 1 && ((indexNonEqualNumber != 2) && (indexNonEqualNumber != (length - 1)))) return -3;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool isEqual(double first, double second) {
|
||||
return (fabs(first - second) < eps);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue