Jueves 14 de Noviembre de 2024, 22:55
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Otro Mas
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Otro Mas (Leído 1074 veces)
RadicalEd
Moderador
Mensajes: 2430
Nacionalidad:
Otro Mas
«
en:
Miércoles 21 de Septiembre de 2005, 21:53 »
0
Código: Text
/*Escribir un programa que permita agregar nº enteros a una lista de números aceptada por teclado. El programa pregunta si debe agregar al principio, al
final o en el medio y agrega el elemento a la lista.*/
#include <stdio.h>
#include <windows.h>
int iArray[10],iCon;
//int iMed,iIni,iFin;
int inicio(int iVal)
{
iArray[0]=iVal;
return 1;
}
int medio(int iVal)//funcion sin comenzar
{
iArray[9/2]=iVal;
return 1;
}
int final(int iVal)
{
iArray[9]=iVal;
return 1;
}
void mostrar()
{
for(iCon=0;iCon<=9;iCon++)
{
printf("%d\n",iArray[iCon]);
}
}
int main(void)
{
int op;
// iArray[2,8,6];
for(iCon=0;iCon<=9;iCon++)
{
printf("Digita %d numero: ",iCon+1);
scanf("%d",&iArray[iCon]);
printf("Posicion \n1(Principio) \n2(Medio) \n3(Final) \n4(Mostrar) \nEscoger: ");
scanf("%d",&op);
switch(op)
{
case 1: inicio(iArray[iCon]);
break;
case 2: medio(iArray[iCon]);
break;
case 3: final(iArray[iCon]);
break;
case 4: mostrar();
}
}
mostrar();
Sleep(2000);
}
Lo que pasa es que lo unico que arregla es el ultimo valor que agregue, osea, sin lo pongo a inicio o a final, pero los primeros que coloco nada, no los acomoda.
Tweet
El pasado son solo recuerdos, el futuro son solo sueños
scullyERA
Miembro activo
Mensajes: 42
Nacionalidad:
Re: Otro Mas
«
Respuesta #1 en:
Martes 8 de Noviembre de 2005, 15:40 »
0
Primero estas guardando desde la funcion main () directamente en el vector en la posicion "iCon":
Código: Text
scanf ("%d", &iArray [iCon]);
y despues estas duplicando el valor al guardarlo, segun la función a la que llamas, en el primer espacio, en el ultimo espacio o a la mitad del vector. [/color]
Sol. Lo que debes hacer es guardar en una variable entera aparte el valor introducido y luego este pasarlo como parametro a cada funcion:
Código: Text
inicio (num), medio (num) y final (num).
[/color]
2do. Dentro de cada una de las 3 funciones anteriores siempre guardas en el mismo espacio cada vez que las llamas, por ejemplo:
en la 1era llamada a inicio (), guardas el valor en la posicion 0 del vector y en la 2da llamada a inicio (), vuelves a guardar el nuevo valor en la posicion 0 del vector, así que el 1ero que estaba se pierde pues sobreescribes en él.
Sol. Para guardar al final o al inicio debes recorrer los datos a los espacios vacios y asi dejar el espacio inicial o final, segun sea el caso, libre para guardar el nuevo dato. En la funcion medio () te recomiendo que uses un contador para indicar especificamente en que posicion del vector desea guardar el nuevo dato (tambien es necesario recorrer los datos ya existentes).
3ro. En la funcion mostrar () estas usando el contador "iCon" y como lo modificas en dicha funcion, al regresar a la funcion main () ya tiene un valor mayor a 9 y sale del ciclo principal
Sol. declara un contador local diferente a "iCon" en la funcion mostrar () y asi no alteras el valor de la variable global "iCon".
SI KIERES ORDENAR, MEJOR INTRODUCE TODOS LOS DATOS TAL CUAL Y LUEGO USAS CUALQUIER ALGORITMO DE ORDENACION
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Otro Mas