En un examen sobre C tenía este ejercicio y no lo supe hacer correctamente, agradecería que me dieseis una solución para compararlo con el que yo hice.
Muchas gracias
Escribe un programa que mostrará un menú con las siguientes opciones:
• Introducir datos: se llenará un vector de 7 elementos con números que se pedirán al usuario. Estos números deben ser múltiplos de 3 o de 4.
• Generar datos: se llenará el mismo vector, pero con números aleatorios entre 0 y 100. Deben ser múltiplos de 3 o de 4.
• Mover a la derecha: se pedirá un número al usuario entre 1 y 6. Los números del vector se moverán tantas posiciones a la derecha como haya indicado el usuario, los números que salen por la derecha del vector, aparecen por el otro lado. Se mostrará el vector antes y después de la operación.
Por ejemplo, si el vector era {9, 12, 21, 32, 36, 3, 4} y se mueve dos posiciones, quedando: {3, 4, 9, 12, 21, 32, 36}. (Ver figura 1 )
Sólo se podrá ejecutar si antes se han introducido datos.
• Visualizar vector: Se pedirá un número al usuario entre 1 y 7 y se mostrará el contenido del vector desde la posición inicial a la introducida por el usuario. Sólo se podrá ejecutar si antes se han introducido datos.
• Salir del programa: cerrará el programa.
• Punto Extra:
Intercambiar: se elegirán dos de los números del vector de forma aleatoria, y se intercambiarán de lugar. Se mostrará el vector antes y después de la operación. Por ejemplo, el vector {1,2,3,4,5,6,7} podría convertirse en {1,5,3,4,2,6,7}.
Mi código es este:
Código
#include <stdio.h> #include <stdlib.h> #include <time.h> // Algorisme 1 de vectors examen int main() { int opcio,i,num,pos; int vector[7]; int vector2[7]; int emplenat=0; opcio=0; while (opcio!=5){ switch(opcio){ case 1: i=0; while (i<7){ if (num%3==0 || num%4==0){ vector[i]=num; i++; } } emplenat=1; break; case 2: i=0; while (i<7){ if (num%3==0 || num%4==0){ vector[i]=num; i++; } } emplenat=1; break; case 3: if (emplenat==1){ for (i=0;i<7;i++){ if((vector[i-pos])<0) vector2[i]=vector[i-pos+7]; else vector2[i]=vector[i-pos]; } for (i=0;i<7;i++){ } for (i=0;i<7;i++){ } } break; case 4: if (emplenat==1){ for (i=0;i<pos;i++){ } } break; } } return 0; }