• Assembler - Входит ли число в интервал?

    @samsungovetch Автор вопроса
    Разобрался. Вот получивший код:
    uses
      SysUtils;
    
    label less;
    label greater;
    label ennnd;
    
    var k: real;
        n: byte;
        min: byte;
        max: byte;
        i: byte;
        digit: byte;
    
    Function Interval(digit, min, max: byte):byte;
      label ennnd;
      label greater;
      label less;
      var res: byte;
      begin
        asm
            mov res,0;
            mov al,digit;  //приравниваю al=digit
            cmp al,min;    //сравниваю с минимальной границей
            ja greater;    //если больше, то переходим
            jna ennnd;     //если нет, то на выход
    
    
          greater:
            cmp al,max;    //сравниваю с максимальной границей
            ja ennnd;     //если нет, то на выход
            mov res,1;     //если меньше, то попадает в интервал, то рес = 1
    
    
          ennnd:
    
    
        end;
        Interval:=res;
      end;
    
    begin
      writeln('Number of digit?: ');
      readln(n);
    
      writeln('Min digit?: ');
      readln(min);
      writeln('Max digit: ');
      readln(max);
    
      for i:= 0 to n-1 do
      begin
        writeln('Digit? ');
        readln(digit);
        writeln(Interval(digit,min,max));
        if (Interval(digit,min,max) > 0) then
          writeln('In Interval')
        else
          writeln('Not In Interval');
      end;
    
      readln(k);
    
    end.
    Ответ написан
  • C - Как в массиве найти наибольшую подпоследовательность полных квадратов?

    @samsungovetch Автор вопроса
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    
    void ent(int *arrayName, int arraySize)
    {
        int i;
    
    
    	for (int i = 0; i < arraySize; i++)
    	{
    		printf("a[%i] = ", i);
    		scanf("%i", &arrayName[i]);
    	}
    }
    
    void proc(int *arrayName, int arraySize) {
        int i,k = 0, max = 0;
        int flag = 0;
        for (i = 0; i < arraySize; ++i)
        {
            if ((sqrt(arrayName[i])) == (round((sqrt(arrayName[i])))))
                {
                    printf("%d - full square \n", arrayName[i]);
                    k++;
                }
            else k = 0;
            if (k>max)
                max = k;
        }
        printf("Max otrezok = %d \n", max);
    }
    
    void printArray(int *arrayName, int arraySize) {
        int i;
        for (i = 0; i < arraySize; ++i) {
            printf("%d ", arrayName[i]);
        }
    }
    
    void main()
    {   int i;
    	int n;//
    	int squar = 0;
    
    	printf("Size Massive: ");
    	scanf("%d", &n);
    
        int Arr[n];
    	ent(Arr, n);
    
    	printf("Array: ");
        printArray(Arr, n);
    
        printf("\n");
    
        proc(Arr,n);
    
    
    
        system("pause");
    }


    Правильный код
    Ответ написан
    Комментировать