• 🚨 29 мая стартует курс «Пентест Active Directory: от теории к практике» от Академии Кодебай

    🔍 Изучите реальные техники атак на инфраструктуру Active Directory: от первоначального доступа до полной компрометации.
    🛠️ Освойте инструменты, такие как BloodHound, Mimikatz, CrackMapExec и другие.
    🧪 Пройдите практические лабораторные работы, имитирующие реальные сценарии атак.
    🧠 Получите знания, которые помогут вам стать востребованным специалистом в области информационной безопасности.

    После старта курса запись открыта еще 10 дней Подробнее о курсе ...

  • Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

Масив, найти вектор, обнаружение ошибки

A

Andrey0707

Помогите пожалуйста, при компиляции в полученном масиве 0. Где ошибка?
Вот условие:
Даны натуральное число n и действительные числа y1 y2…yn. Получить вектор Z (Z1, Z2…Zn),
Компонента Zi равняется:
yi, если 0 < yi < 10;
в противном случае 0 < Zi < 10;
Решение получить в виде массивов.
C++:
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
 
const int m=10;
int main()
{
float Y[m];
float Z[m];
 
int i;
 
	for (i = 0; i< m; i++) 
	Y[i] = rand() %15 -2;
 
printf("Massiv: \n");
for ( i = 0; i< m; i ++ ) 
printf("%3.0f |", Y[i] );   
printf ("\nPolukchenii masiv:\n");
for(i=0;i <m;i++)
{
if(0<Y[i]<10)
Y[i] = Z[i];	
else 
Z[i] = 1;
printf("%3.0f |", Z[i]);	  
}
getch(); 
}
 
Так сравнивать нельзя. На мой взгляд, тут еще не известно какой оператор будет выполнен первым, до допустим, что они выполнятся слева направо. Пусть Y больше ноля.
Тогда
Код:
0<Y[i]
вернет true, а значит что следом ты выполнишь
Код:
true < 10
При этом true будет преобразовано в единицу.

Проблема в том, что если Y будет равно например 1000 - то выполнится 0 < 1000, а затем 1 < 10 и ты также получишь в результате true. Хотя, очевидно, что 1000 < 10 должно вернуть false.

Это была первая ошибка. Вторая в том, что тебе надо сформировать z, но при каких-то условиях ты пытаешься формировать наоборот y:
Код:
Y[i] = Z[i];

Правильное решение:
Код:
if (0 < y[i] && y[i] < 10)
  z[i] = y[i];
else
  z[i] = 1;

Больше ляпов не заметил.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!

Курс AD