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.
(http://agora.xtec.cat/iesbadia/moodle/file.php/4201/examens/UF1/figura1.jpg)
• 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");
printf("5.Sortir\n");
scanf("%i",&opcio);
fflush(stdin);
switch(opcio){
case 1:
i=0;
while (i<7){
printf("Donam un numero");
scanf("%i",&num);
if (num%3==0 || num%4==0){
vector[i]=num;
i++;
}
}
emplenat=1;
break;
case 2:
i=0;
while (i<7){
num=rand()%101;
if (num%3==0 || num%4==0){
vector[i]=num;
i++;
}
}
emplenat=1;
break;
case 3:
if (emplenat==1){
printf("Quantes posicions vols");
scanf("%i",&pos);
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");
scanf("%i",&pos);
for (i=0;i<pos;i++){
printf("%i ",vector[i]);
}
printf("\n");
}
break;
}
}
system("pause");
return 0;
}
Especifica que es lo que no te salio correctamente para asi ayudarte con eso. Despues el resto no creo que haya tantas opciones de hacerlo diferente al tuyo
SAludos