Xxxxxx
Resuelto
Usuario anónimo
-
JooS Mensajes publicados 2705 Estado Miembro -
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
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
Intenta esto ...
PS : No pude probarlo porque mi compilador tiene muchos errores ...
#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 ...
#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++;
}
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.
dinos si funciona