Защита от дурака при вводе элементов массива - C (СИ)
Формулировка задачи:
помоги, пожалуйста, написать защиту от дурака(после 38 и после 42 строк)
#include <stdio.h>
#include <conio.h>
#define N 100
void my_printf(int *m,int n)
{
int i;
for(i=0;i<n;i++)
printf("%d",m[i]);
return;
}
int poisk1(int *m,int n)
{
int i,b=0,j=-1;
for(i=0;i<n;i++)
if(m[i]<i)
{
b++;
if(b==1)
j=i;
}
return j;
}
int poisk2(int *m,int n,int j)
{
int i,r=-1;
for(i=j+1;i<n;i++)
if(m[i]%2!=0)
{
r=i;
}
return r;
}
void main()
{
int M[N],n,i,kol=0,sum=0,j=-1,r=-1,b=0;
printf("Vvedite razmer massiva\n");
scanf("%d",&n);
printf("Vvedite massiv\n");
fflush(stdin);
for(i=0;i<n;i++)
scanf("%d",&M[i]);
my_printf(M,n);
j=poisk1(M,n);
printf("\nindecs1=%d",j);
r=poisk2(M,n,j);
printf("\nindecs2=%d",r);
if(j==-1)
{
sum=0;
kol=0;
}
else
{
if(r>0)
for(i=j;i<=r;i++)
{
sum+=M[i];
kol++;
}
else
for(i=j;i<n;i++)
{
sum+=M[i];
kol++;
}
}
printf("\nObschaya summa elementov zadannoy posledovatelnosti=%d\n",sum);
printf("Kolichestvo elementov zadannoy posledovatelnosti=%d\n",kol);
getch();
return;
}Решение задачи: «Защита от дурака при вводе элементов массива»
textual
Листинг программы
char s[8193],s2[8193];
int n;
for(;;)
{
scanf("%s",s);
n=atoi(s);
itoa(n,s2,10);
if(strcmp(s2,s)==0)
break;
}
Объяснение кода листинга программы
В этом коде используется цикл for(;;) для выполнения повторяющегося блока кода. Блок кода внутри цикла включает следующие действия:
- Чтение строки из стандартного ввода с помощью функции scanf и сохранение ее в массиве s.
- Преобразование строки в целое число с помощью функции atoi и сохранение результата в переменной n.
- Преобразование числа обратно в строку с помощью функции itoa и сохранение результата в массиве s2.
- Сравнение строк s2 и s с помощью функции strcmp. Если они равны, то цикл завершается. В общем, этот код предназначен для чтения строки, преобразования ее в число, преобразования числа обратно в строку и проверки, совпадает ли эта строка с исходной. Это может быть использовано для защиты от ввода некорректных данных, например, в программе, которая принимает числа от пользователя. Если введенная строка не является числом или не совпадает с исходной строкой после преобразования, код будет повторять запрос на ввод, пока не будет введено корректное значение.