Utilice los símbolos "□"■" para dibujar cuadrados y diagonales cuadradas en lenguaje C.
//¿Proporcionar un menú simple a la consola y? Salida cuadrada y rectangular.
//La salida diagonal del rectángulo es inestable (la discretización de ecuaciones geométricas requiere un algoritmo más complejo, por lo que es más profundo). Se puede utilizar cuando el largo y el ancho son mayores.
//Una ventana con una longitud de lado de aproximadamente 32 no se puede mostrar por completo.
#¿Incluir? & ltiostream & gt
#Contiene? & ltstdlib.h & gt
#¿Incluir? & ltstdio.h & gt
¿#Contiene? & ltconio.h & gt
¿Usar? ¿Espacio de nombres? std
//?func? Declaración-
¿No es válida? set_prefix_str(char * &?str,?int?line.char?ch);
¿No es válido? println_str(const?char*?str);
¿No es válido? print_pix(const?char*?str);
int? print_rectangle(float? rectX, float? rectY);
//?gloabl? -
¿constante? carbonizarse*? ¿PIX0? =?"□";
constante? carbonizarse*? ¿PIX1? =?"■";
int? Ryan. =?8;
carácter*? ¿Prefijo? =?NULL
//?¿Principalmente? ¿menú? -
int? main()
{
¿Flotador? rectX
¿Flotar? recY
int? ¿Opciones? =?-1;
Establecer cadena de prefijo (?prefijo,?línea.'?'?);
¿Y (1)? {
System("cls");
println _ str(" ");
println _ str(" ");
println_str("¿Imprimir? Rectángulo");
println _ str(" ");
println _ str(" "); "[1]? ¿Imprimir? Cuadrado");
println_str("[2]"? ¿Imprimir? Rectángulo (inestable)");
println_str("[3]? Configuración ");
println _ str(" ");
println_str("[0]? Salir");
println _ str(" " ) ;
Opciones? =?getch();
println _ str(" ");
Si (?Opciones?<?'0 '? ¿O?>?'?{
Continuar;
Si (' 0 ' = = opción) ? {
Romper;
}
if? (' 3 ' = opción)? {
Print_pix("establecer sangría izquierda: ");
CIN>>LEN
Establecer cadena de prefijo (?prefix,?len.
'?'? );
Continuar;
}
¿Y si? ('1' == opción)? {
Print_pix("Longitud del lado cuadrado:");
CIN>>rectY? rectX = rectY
println _ str(" ");
}
¿Si? ('2' = =opción)? {
Print_pix("Longitud del rectángulo:");
CIN>& gtrectX
println _ str(" ");
Print_pix("Altura del rectángulo:");
CIN & gt; & gtrectY
println _ str(" ");
}
p>¿Y si? (¿rectX & lt0? ¿O? rectX & gt64)?{
Println _ str("Rango de parámetros x incorrecto");
System("pausa");
Continuar;
}
¿Y si? (¿rectY & lt0? ¿O? rectY & gt64)?{
Println_str("Error de rango de parámetro Y");
System("pausa");
Continuar;
}
system("cls");
println _ str(" ");
print_rectangle(rectX , rectY);
println _ str(" ");
Sistema("pausa");
Continuar;
}
¿Volver? 0;
}
//?¿Herramientas? -
¿Anulado? println_str(const?char*?cadena)? {
cout & lt& lt? str<<? endl<<? prefijo;? //?¿aún? ¿usar? ¿imprimir? ¿A dónde ir? Imprimir
}
¿Nulo? print_str(const?char*?cadena)? {
cout & lt& lt? str<<? prefijo;? //?¿aún? ¿usar? ¿imprimir? ¿A dónde ir? Imprimir
}
¿Nulo? print_pix(const?char*?cadena)? {
cout & lt& lt? cadena? //?¿aún? ¿usar? ¿imprimir? ¿A dónde ir? Imprimir
}
¿Nulo? set_prefix_str(char *&?str,?int?line.char?ch)? {
¿Y si? (?str?)?{
Gratis (str);
}
//¿Usar? ¿Nuevo? ¿aún? Mallock
cadena? =?(carácter*)? malloc(?sizeof(char)*(len+1)?);
//¿Nuevo? char[](len+1)
//delete[](str)
¿Para qué? (int?i?=?0;?i?<?len?++i)? {
cadena[i]? =?ch;
}
str[len]? =?'\0';
}
int? print_rectangle(¿flotante?rectX,?flotante?rectY)? {
int? maxX? =?(int)(rectX);
int? Máx.
=?(int)(rectY);
//¿Ecuación diagonal? ¿y? =?kx? +?b
//¿Regla cuadrada? k? =?+/-1
¿Flotante? k1? =?maxY/(float)(maxX);
¿Flotador? k2? =?-maxY/(float)(maxX);
int? ¿Contar? =?0;
¿Para qué? (int?y?=?0;?y?<=?maxY?++y)? {
¿Para qué? (int?x?=?0;?x?<=?maxX?++x)? {
//Ecuación horizontal
¿Y si? (0==y? ¿O? maxY==y)? {
imprimir _ pix(pix 1);
++ recuento;
Continuar;
}
//Ecuación vertical
¿Y si? (0==x? O? maxX==x)? {
imprimir _ pix(pix 1);
++ recuento;
Continuar;
}
//Ecuación diagonal? ¿y? =?kx? +?b
¿Y si? ((int)(k1*x)==y? ¿O? (int)(k2*x)+maxY==y)? {
imprimir _ pix(pix 1);
++ recuento;
Continuar;
}
print _ pix(pix 0);
++ recuento;
Continuar
}
println _ str(" " );
}
¿Volver? Contar;
}