Buenas,
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:
#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){
printf("1.Introduir numeros manualment\n"); printf("2.Introduir automaticament\n"); printf("3.Moure cap a la dreta\n"); printf("4.Visualitza el vector\n"); 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){
printf("Quantes posicions vols"); for (i=0;i<7;i++){
if((vector[i-pos])<0) vector2[i]=vector[i-pos+7];
else vector2[i]=vector[i-pos];
}
printf("Abans de moure els elements\n"); for (i=0;i<7;i++){
printf("Posicio %i = %i\n",i
,vector
[i
]); }
printf("Despres de moure els elements\n"); for (i=0;i<7;i++){
printf("Posicio %i = %i\n",i
,vector2
[i
]); }
}
break;
case 4:
if (emplenat==1){
printf("Fins a quina posicio\n"); for (i=0;i<pos;i++){
}
}
break;
}
}
return 0;
}