Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

133
Vistas
El código ejecuta todos los casos incluso con la declaración de interrupción

Este es un programa simple para rotar bits, el caso del interruptor se usa para definir si el usuario quiere una rotación hacia la izquierda o hacia la derecha después de obtener el bit más significativo o el bit menos significativo, según la elección que usé para el bucle en el lado del interruptor y usé los mismos valores y ejecuta todos los casos sin importar lo que ingresé.

 #include <stdio.h> #define SIZE sizeof(number)*8 void main() { int number, rotate, i, SB, numberr; char choice; puts("simple program to rotate bits of a number"); printf("If you want right rotation type 'R'\n"); printf("enter your number : "); scanf("%d", &number); printf("Enter how much time you want to rotate : "); scanf("%d", &rotate); getchar(); printf("IF you want left rotation type 'L' : "); scanf("%c", &choice); switch(choice) { case 'l' : case 'L' : SB = (1<<(SIZE-1))&1; for(i=0;i<rotate;i++) { numberr = (number << 1) | SB; printf("\n%d after being rotated %d times became %d\n\n", number, rotate, numberr); } break; case 'r' : case 'R' : SB = number & 1; for(i=0;i<rotate;i++) { numberr = (number >> 1) | SB; printf("\n%d after being rotated %d time became %d\n\n", number, rotate, numberr); } break; default : printf("please chose either R or L\n\n"); } }
over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

He refinado tu código y esto podría ayudar. Es posible que desee mejorar la sintaxis de su código antes de publicar la pregunta.

 #include <stdio.h> #define SIZE 32 int main() { int number, rotate, i, number1; char choice; int output; puts("simple program to rotate bits of a number"); printf("enter your number : "); scanf("%d", &number); printf("Enter how much time you want to rotate : "); scanf("%d", &rotate); printf("If you want right rotation type 'R'\n"); printf("IF you want left rotation type 'L' : "); scanf(" %c", &choice); switch(choice) { case 'l' : case 'L' : output = (number << rotate) | (number >> (SIZE - rotate)); printf("%d after rotating %d times became %d,",number,rotate,output); break; case 'r' : case 'R' : output = (number >> rotate) | (number << (SIZE - rotate)); printf("%d after rotating %d times became %d,",number,rotate,output); break; default : printf("Please choose either R or L\n\n"); } return 0; }
over 4 years ago · Santiago Trujillo Denunciar

0

El resultado es confuso porque los mensajes de cada case están redactados de manera idéntica. Cuando agregué L y R al mensaje, mostró que solo se ejecuta un case .

El problema es que la salida está dentro del bucle y debe moverse fuera, por ejemplo

 case 'l' : case 'L' : SB = (1<<(SIZE-1))&1; for(i=0;i<rotate;i++) { numberr = (number << 1) | SB; } printf("L %d after being rotated %d times became %d\n\n", number, rotate, numberr); break;
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda