Foro de elhacker.net

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:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. // Algorisme 1 de vectors examen
  5.  
  6. int main() {
  7.    int opcio,i,num,pos;
  8.    int vector[7];
  9.    int vector2[7];
  10.    int emplenat=0;
  11.    opcio=0;
  12.    while (opcio!=5){
  13.    printf("1.Introduir numeros manualment\n");
  14.    printf("2.Introduir automaticament\n");
  15.    printf("3.Moure cap a la dreta\n");
  16.    printf("4.Visualitza el vector\n");
  17.    printf("5.Sortir\n");
  18.    scanf("%i",&opcio);
  19.    fflush(stdin);
  20.    switch(opcio){
  21.                  case 1:
  22.                       i=0;
  23.                       while (i<7){
  24.                             printf("Donam un numero");
  25.                             scanf("%i",&num);
  26.                             if (num%3==0 || num%4==0){
  27.                                           vector[i]=num;
  28.                                           i++;
  29.                                           }
  30.                        }
  31.                        emplenat=1;
  32.                        break;
  33.                  case 2:
  34.                       i=0;
  35.                       while (i<7){
  36.                             num=rand()%101;
  37.                             if (num%3==0 || num%4==0){
  38.                                           vector[i]=num;
  39.                                           i++;
  40.                                           }
  41.                             }
  42.                       emplenat=1;
  43.                       break;
  44.                  case 3:
  45.                       if (emplenat==1){
  46.                                        printf("Quantes posicions vols");
  47.                                        scanf("%i",&pos);
  48.                                        for (i=0;i<7;i++){
  49.                                            if((vector[i-pos])<0) vector2[i]=vector[i-pos+7];
  50.                                            else vector2[i]=vector[i-pos];
  51.                                            }
  52.                                        printf("Abans de moure els elements\n");
  53.                                        for (i=0;i<7;i++){
  54.                                            printf("Posicio %i = %i\n",i,vector[i]);
  55.                                            }
  56.                                        printf("Despres de moure els elements\n");
  57.                                        for (i=0;i<7;i++){
  58.                                            printf("Posicio %i = %i\n",i,vector2[i]);
  59.                                            }
  60.                                        }
  61.                       break;
  62.                  case 4:
  63.                       if (emplenat==1){
  64.                                        printf("Fins a quina posicio\n");
  65.                                        scanf("%i",&pos);
  66.                                        for (i=0;i<pos;i++){
  67.                                            printf("%i ",vector[i]);
  68.                                        }
  69.                                        printf("\n");
  70.                                        }
  71.                       break;
  72.                  }
  73. }
  74.    system("pause");
  75.    return 0;
  76. }


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