Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Ayuda con un programa de dev-c++

Estas en el tema de Ayuda con un programa de dev-c++ en el foro de C/C++ en Foros del Web. HOLA A TODOS, BUENO EL PROBLEMA QUE TENGO Y ESPERANDO PUEDAN AYUDARME ES QUE HE REALIZADO EL SIGUIENTE CODIGO, QUE CORRE PERFECTAMENTE, PERO LO QUE ...
  #1 (permalink)  
Antiguo 10/10/2010, 21:42
 
Fecha de Ingreso: octubre-2010
Mensajes: 7
Antigüedad: 13 años, 7 meses
Puntos: 0
Ayuda con un programa de dev-c++

HOLA A TODOS, BUENO EL PROBLEMA QUE TENGO Y ESPERANDO PUEDAN AYUDARME
ES QUE HE REALIZADO EL SIGUIENTE CODIGO, QUE CORRE PERFECTAMENTE, PERO LO QUE QUIERO ES QUE BUSQUE UN ELEMENTO EN EL VECTOR Y DESPUES DE ENCONTRARLO,EL ELEMENTO QUE LE SIGUE (ATRAS) PUEDA BORRARLO O CONVERTIRLO A CERO, LO UNICO QUE HE LOGRADO ES QUE ENCUENTRE EL ELEMENTO DE ACUERDO A SU POSICION Y LE ASIGNE CERO. PERO COMO YA HABIA MENCIONADO NECESITO QUE BORRE EL ANTERIOR POR EJEMPLO,
2,3,4 Y SI QUIERO BORRAR EL DE LA POSICION 2 OBTENGO
2,0,4 Y LO QUE QUIERO ES 2,3,0 BORRE UNA POSICION ATRAS.
BORRAR NO SE SI SE PUEDA, HE LEIDO QUE COMO ES MEMORIA ESTATICA NO SE PUEDE PERO SERIA MEJOR, PERO SI EN SU CASO LA SOLUCION SOLO ES PONERLE CERO ME CONFORMO. BUENO ESPERO Y PUEDAN AYUDARME. A LO MEJOR Y ES ALGO COMO CAMBIARLE UN INDICE NADAMAS PERO YA HE INTENTADO DE TODO Y NO ME SALE. EL CONDIGO ES EL SIGUIENTE.

EL PROGRAMA ESTA HECHO EN DEV-C++

#include<iostream.h>
#include<conio.h>
#include<stdio.h>
#include<string.h>

int main()

{ int i,n,a[50]={0},resp,no,nuevo=0,pos=0,opcion,borr,z;
do{

cout<<endl;
cout<<"Cuantos elementos deseas ingresar ";
cin>>n;
cout<<endl;
for(i=1;i<=n;i++)
{
cout<<"ingresa "<<i<<": ";
cin>>a[i];
}
cout<<endl;
cout<<"La lista queda como"<<endl<<endl;
for(i=1;i<=n;i++)
{
cout<<a[i]<<",";
}
cout<<endl<<endl;
cout<<"___Deseas BORRAR un valor a la lista___"<<endl;
cout<< " Ingresa *1* para___si o *2* para _no_"<<endl<<endl;
cin>>resp;

if(resp==1)
{
do{

cout<<"inserta el numero que su parte posterior sera borrado( o atras) ";
cin>>borr;

for(i=0;i<n;i++)
{
if(borr==a[i])
a[i]=0;

}

for(i=1;i<=n;i++)
{
cout<<a[i];
}


}while(pos>n);

}
else {

cout<<"";
}
getch();
system("cls");

cout<<endl<<endl;
cout<<"Deseas realizar nuevamente la operacion con otros valores"<<endl;
cout<<endl;
cout<<"Ingresa *1* para --si-- o *2* para --no-- ";
cin>>opcion;


}while(opcion==1);

getch();

}
  #2 (permalink)  
Antiguo 11/10/2010, 02:49
Avatar de Munire  
Fecha de Ingreso: julio-2010
Ubicación: en el ciberdespacio (España)
Mensajes: 150
Antigüedad: 13 años, 9 meses
Puntos: 4
Respuesta: Ayuda con un programa de dev-c++

prueba con a[i - 1]=0; para borrar el de la izquierda y a[i + 1]=0; para el de la derecha.


Código C++:
Ver original
  1. if(resp==1)
  2. {
  3. do{
  4.  
  5. cout<<"inserta el numero que su parte posterior sera borrado( o atras) ";
  6. cin>>borr;
  7.  
  8. for(i=0;i<n;i++)
  9. {
  10. if(borr==a[i])
  11. a[i - 1]=0;//<=======
  12.  
  13. }
  #3 (permalink)  
Antiguo 11/10/2010, 09:10
 
Fecha de Ingreso: octubre-2010
Ubicación: Edo. de México
Mensajes: 94
Antigüedad: 13 años, 7 meses
Puntos: 9
Respuesta: Ayuda con un programa de dev-c++

Aqui te tengo un ejemplo de como lo haria en c, en realidad lo que tienes que hacer es recorrer lo valores a partir del valor que quieres que sea borrardo y reducir el tamaño de la lista.

Código c:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4.  
  5. int main()
  6. {
  7.   int maximo;
  8.   int valores[50];
  9.   int i, j, opcion = 0;
  10.   int borrar;
  11.   printf("Cuantos valores deseas ingresar?: ");
  12.   scanf("%i", &maximo);
  13.   while(getchar() != '\n');
  14.   fflush(stdin);
  15.  
  16.   for(i = 0; i < maximo; i++)
  17.     {
  18.       printf("valor[%i] :", i);
  19.       scanf("%i", &valores[i]);
  20.       while(getchar() != '\n');
  21.       fflush(stdin);
  22.     }
  23.  
  24.   printf("\nMostrando lista:\n");
  25.   for(i = 0; i < maximo; i++)
  26.     {
  27.       printf("[%i] ", valores[i]);
  28.     }
  29.   printf("\n");
  30.  
  31.   printf("Deseas borrar algun elemento?[0/1]: ");
  32.   scanf("%i", &opcion);
  33.   while(getchar() != '\n');
  34.   fflush(stdin);
  35.  
  36.   if(opcion == 1)
  37.     {
  38.       printf("Inserta el valor del elemento cuya parte posterior sera borrada: ");
  39.       scanf("%i", &borrar);
  40.       while(getchar() != '\n');
  41.       fflush(stdin);
  42.       for(i = 0; i < maximo; i++)
  43.         {
  44.           if(valores[i] == borrar)
  45.             {
  46.               if((i + 1) < maximo)
  47.                 {
  48.                   for(j = i + 1; j < maximo; j++)
  49.                     {
  50.                       if( (j + 1) < maximo)
  51.                         {
  52.                           valores[j] = valores[j+1];
  53.                         }
  54.                     }
  55.                   valores[j] = 0;
  56.                   maximo--;
  57.                 }
  58.               else printf("No hay elementos despues del valor: %i,  valores[i]");
  59.             }
  60.         }
  61.     }
  62.  
  63.   printf("\nMostrando lista:\n");
  64.   for(i = 0; i < maximo; i++)
  65.     {
  66.       printf("[%i] ", valores[i]);
  67.     }
  68.   printf("\n");
  69. }

Obtengo esta salida:
Código:
Cuantos valores deseas ingresar?: 5
valor[0] :1
valor[1] :2
valor[2] :3
valor[3] :4
valor[4] :5

Mostrando lista:
[1] [2] [3] [4] [5]
Deseas borrar algun elemento?[0/1]: 1
Inserta el valor del elemento cuya parte posterior sera borrada: 3

Mostrando lista:
[1] [2] [3] [5]
Espero te sea de ayuda

Saludos++;
  #4 (permalink)  
Antiguo 11/10/2010, 14:16
 
Fecha de Ingreso: octubre-2010
Mensajes: 7
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Ayuda con un programa de dev-c++

Cita:
Iniciado por Munire Ver Mensaje
prueba con a[i - 1]=0; para borrar el de la izquierda y a[i + 1]=0; para el de la derecha.


Código C++:
Ver original
  1. if(resp==1)
  2. {
  3. do{
  4.  
  5. cout<<"inserta el numero que su parte posterior sera borrado( o atras) ";
  6. cin>>borr;
  7.  
  8. for(i=0;i<n;i++)
  9. {
  10. if(borr==a[i])
  11. a[i - 1]=0;//<=======
  12.  
  13. }
Gracias a ambos !!!!!!!!!funciono!!!!!

Etiquetas: programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:53.