Solución para mi ejercicio en C

Iniciado por sora_ori, 3 Enero 2013, 13:03 PM

0 Miembros y 1 Visitante están viendo este tema.

sora_ori

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");
    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;
}

durasno

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
Ahorrate una pregunta, lee el man