Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: sora_ori en 3 Enero 2013, 13:03 PM

Título: Solución para mi ejercicio en C
Publicado por: sora_ori en 3 Enero 2013, 13:03 PM
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;
}
Título: Re: Solución para mi ejercicio en C
Publicado por: durasno en 3 Enero 2013, 23:58 PM
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