Xxxxxx

Resuelto
Usuario anónimo -  
JooS Mensajes publicados 2705 Estado Miembro -
Hola,

Consideramos dos arreglos (tab_p y tab_i) de dimensión 5. Estos arreglos deben contener enteros.
-tab_p debe contener los números pares.
-tab_i debe contener los números impares.

1\ Hacer un programa que permita llenar según el mecanismo siguiente:
-Se debe leer un entero desde el teclado
-Si el valor es par se llena tab_p
-De lo contrario, si el valor es impar se llena tab_i

2\ Recorrer cada uno de estos arreglos mediante punteros para mostrar estos valores como sigue:
tab_par tab_i
. .
. .
. .
. .

NB: resolver este ejercicio sin usar funciones y señalar que solo se deben ingresar enteros impares cuando el arreglo de números pares esté lleno.

AYÚDENME LO ANTES POSIBLE, POR FAVOR, a resolver este ejercicio :(

Configuración: Windows 7 / Firefox 3.6.16

3 respuestas

  1. JooS Mensajes publicados 2705 Estado Miembro 228
     
    Hola, ¿qué has podido hacer hasta ahora?
    0
    1. Usuario anónimo
       
      slt aquí está el código que he comenzado hasta ahora


      #include <stdio.h>
      #include <stdlib.h>

      int main()
      {int tab_p[5]; int tab_i[5]; int i=0; int val; int i_p=0,i_i=0;
      while(i<10){
      printf("ingrese un valor entero: ");
      scanf("%d",&val);
      i++;
      if(val%2==0){
      tab_p[i_p]=val;

      i++;}
      else{
      tab_i[i_i]=val;

      i_i++;
      }
      0
    2. oliver3923 Mensajes publicados 1059 Estado Miembro 143
       
      Hola

      comienza por indentir tu código
      desplaza tus bloques una tabulación a la vez, será mucho más legible
      para tus variables, no es necesario poner int cada vez, pones int, declaras tu variable (inicializándola si es necesario), una coma y la segunda variable... luego un punto y coma

      if(val%2==0)
      {
      tab_p[i_p]=val;
      i++;
      }

      else
      {
      tab_i[i_i]=val;
      i_i++;
      }

      has mezclado tus índices
      si val es par lo colocas en el índice i_p de tu tabla par y luego incrementas i
      de lo contrario, lo colocas en el índice i_i de tu tabla impar y luego incrementas i_i

      sin embargo, debes incrementar i cada vez que llenes una celda de tu tabla
      también debes incrementar i_p cuando colocas un valor en tu tabla par

      por lo tanto, necesitas incrementar i fuera de tu condición, después de tu else

      además, una vez que una de las tablas esté llena, deberías añadir un bucle para la entrada para asegurarte de que el valor ingresado sea correcto, de lo contrario tendrás un error al acceder a tu tabla

      imaginemos que introduces 5 enteros pares
      tu índice i_p estará entonces en 4 (la última celda de tu tabla), por lo que si ingresas por error un 6° entero par, tu código intentará acceder al índice 5 que no existe y tu programa fallará


      comienza por rectificar la forma en que incrementas tus índices, verifica si funciona con atención y si está bien añade el bucle correcto cuando pidas ingresar un valor para poder al principio ingresar números pares o impares y luego únicamente pares o únicamente impares en función de la primera tabla que se complete.
      0
    3. Usuario anónimo
       
      mais comment j'ai fait pour ne pas voir ton explication dès le début ; c'est pas croyable !!!! OLIVER vous avez vu tout de suite que je suis un débutant en C en fait je l'ai commencé ça ne fait pas longtemps mais vous m'avez beaucoup aidé ici MERCI!!!!!!!!!!
      0
    4. oliver3923 Mensajes publicados 1059 Estado Miembro 143
       
      no pasa nada, tranquilo

      dinos si funciona
      0
    5. Usuario anónimo
       
      Ok, no dejaré de informarte, pero tengo que instalar Borland C++ porque no funciona en Dev-C++.
      0
  2. JooS Mensajes publicados 2705 Estado Miembro 228
     
    Intenta esto ...

    #include <stdio.h> void main() { int tab_p[5], tab_i[5], p=0, i=0, nbr; tab_p[4] = NULL; tab_i[4] = NULL; while(i+p < 10) { if(!tab_p[4] && !tab_i[4]) printf("Introduce un número entero: "); else if(!tab_p[4] && tab_i[4]) printf("Introduce un número par: "); else printf("Introduce un número impar: "); scanf("%d",&nbr); //---------------- if(nbr%2 == 0) { tab_p[p] = nbr; p++; } else { tab_i[i] = nbr; i++; } } scanf("\n"); }


    PS : No pude probarlo porque mi compilador tiene muchos errores ...
    0
  3. Usuario anónimo
     
    He intentado pero aún no funciona. Voy a intentar encontrar el error. ¡Eres realmente amable, eres un ángel!
    0
    1. JooS Mensajes publicados 2705 Estado Miembro 228
       
      ¿Qué compilador tienes, porque la mayoría muestra la línea donde está el error?
      0
    2. Usuario anónimo
       
      el compilador se detiene aquí: tab_p[4] = NULL; y no sé por qué.
      0
    3. Usuario anónimo
       
      tengo DEV-C++
      0
    4. oliver3923 Mensajes publicados 1059 Estado Miembro 143
       
      no estoy seguro de que se pueda declarar un entero como null

      elimínalas dos líneas para ver qué pasa

      además lo haces 2 veces^^ (tienes que cambiar el nombre del segundo)
      0
    5. JooS Mensajes publicados 2705 Estado Miembro 228
       
      oops, el segundo es para tab_i
      0