elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Error con arreglos
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Error con arreglos  (Leído 1,628 veces)
NicolasPileci

Desconectado Desconectado

Mensajes: 32



Ver Perfil
Error con arreglos
« en: 23 Agosto 2017, 21:28 pm »

Estimados,
buenos dias.

Serian tan amables de indicarme que error estoy cometiendo en el siguiente programa.
La idea es insertar un nuevo elemento en un arreglo de enteros pero sin eliminar ni pisar nada. Es decir, si el arreglo cuenta con 5 elementos, se debe ingresar uno nuevo, de acuerdo a la posicion ingresada por teclado y correr el resto para no perder nada.

El error que me da es que se pisa el contenido del elemento 3 y el 6 me arroja basura.

Desde ya muchas gracias.

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define TAM 20
  4.  
  5. int ingresarVector (int vec[TAM]);
  6. void insertarElemento (int vec[TAM], int cant);
  7. void mostrarVector (int vec[TAM], int cant);
  8.  
  9. int main ()
  10. {
  11.    system ("color 0a");
  12.    int vec[TAM],
  13.        cant;
  14.    cant = ingresarVector (vec);
  15.    insertarElemento (vec, cant);
  16.    mostrarVector (vec, cant);
  17.    return 0;
  18. }
  19.  
  20. int ingresarVector (int vec[TAM])
  21. {
  22.    int i,
  23.        cant;
  24.    printf ("Ingrese cantidad de elementos: ");
  25.    scanf ("%d", &cant);
  26.    for (i=0; i<cant; i++)
  27.    {
  28.        printf ("\n\nIngrese elementos: ");
  29.        scanf ("%d", &vec[i]);
  30.    }
  31.    return cant;
  32.  
  33. }
  34.  
  35. void insertarElemento (int vec[TAM], int cant)
  36. {
  37.    int i,
  38.        pos,
  39.        ele;
  40.    cant++;
  41.    printf ("\n\nIngrese posicion de insercion: ");
  42.    scanf ("%d", &pos);
  43.    printf ("\n\nIngrese elemento: ");
  44.    scanf ("%d", &ele);
  45.    for (i=cant-1; i<pos; i--)
  46.        vec[i] = vec[i-1];
  47.    vec[pos-1] = ele;
  48. }
  49.  
  50. void mostrarVector (int vec[TAM], int cant)
  51. {
  52.    int i;
  53.    cant++;
  54.    for (i=0; i<cant; i++)
  55.        printf ("\nPosicion: %d, Elemento: %d", i+1, vec[i]);
  56.        printf ("\n");
  57. }


En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Error con arreglos
« Respuesta #1 en: 23 Agosto 2017, 21:46 pm »

CUando pides la posición de inserción, ¿esperas un número en el rango [0, TAM) o [1, TAM]?

Luego:
Código
  1. for (i=cant-1; i<pos; i--)
La condición de ese for es incorrecta. i no va a ser menor que pos (ten en cuenta que empieza en el final del vector). Querrías poner i> o i>=.

Hecha esta corrección y suponiendo que ese fuera el único error, debería estar.
De todos modos:
Código
  1. vec[pos-1] = ele;
ahí le restas 1 a pos. Intuyo que es porque pides la posición en el rango [1, TAM]. Si es así, ten cuidado a la hora de trabajar con "pos". Tal vez te covnendría restarle 1 después de pedirla.
Si no es así, entonces esa línea debería ser:
Código
  1. vec[pos] = ele;


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ERROR ARREGLOS, FUNCIONES Y Makefile.win
Programación C/C++
alfo1294 1 2,282 Último mensaje 27 Julio 2012, 05:21 am
por avesudra
ARREGLOS
Programación C/C++
JakiRuiz 1 1,512 Último mensaje 25 Febrero 2015, 17:08 pm
por eferion
arreglos
Java
diegormirez134 1 2,288 Último mensaje 19 Junio 2016, 03:24 am
por hectornunezrivas
(Consulta)Error al unir 2 arreglos
Programación C/C++
palacio29 0 1,656 Último mensaje 29 Noviembre 2016, 15:56 pm
por palacio29
Error en una funcion con arreglos xc
Programación C/C++
axel19 1 1,672 Último mensaje 22 Abril 2018, 10:06 am
por MAFUS
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines