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

JooS Mensajes publicados 2705 Estado Miembro 228
 
Hola, ¿qué has podido hacer hasta ahora?
0
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
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
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
oliver3923 Mensajes publicados 1059 Estado Miembro 143
 
no pasa nada, tranquilo

dinos si funciona
0
Usuario anónimo
 
Ok, no dejaré de informarte, pero tengo que instalar Borland C++ porque no funciona en Dev-C++.
0
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
Usuario anónimo
 
He intentado pero aún no funciona. Voy a intentar encontrar el error. ¡Eres realmente amable, eres un ángel!
0
JooS Mensajes publicados 2705 Estado Miembro 228
 
¿Qué compilador tienes, porque la mayoría muestra la línea donde está el error?
0
Usuario anónimo
 
el compilador se detiene aquí: tab_p[4] = NULL; y no sé por qué.
0
Usuario anónimo
 
tengo DEV-C++
0
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
JooS Mensajes publicados 2705 Estado Miembro 228
 
oops, el segundo es para tab_i
0