Защита от дурака при вводе элементов массива - 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(;;) для выполнения повторяющегося блока кода. Блок кода внутри цикла включает следующие действия:

  1. Чтение строки из стандартного ввода с помощью функции scanf и сохранение ее в массиве s.
  2. Преобразование строки в целое число с помощью функции atoi и сохранение результата в переменной n.
  3. Преобразование числа обратно в строку с помощью функции itoa и сохранение результата в массиве s2.
  4. Сравнение строк s2 и s с помощью функции strcmp. Если они равны, то цикл завершается. В общем, этот код предназначен для чтения строки, преобразования ее в число, преобразования числа обратно в строку и проверки, совпадает ли эта строка с исходной. Это может быть использовано для защиты от ввода некорректных данных, например, в программе, которая принимает числа от пользователя. Если введенная строка не является числом или не совпадает с исходной строкой после преобразования, код будет повторять запрос на ввод, пока не будет введено корректное значение.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.75 из 5
Похожие ответы