Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: L0R0 en 25 Febrero 2011, 21:49 pm



Título: Ayuda codigo C++ (Agenda)
Publicado por: L0R0 en 25 Febrero 2011, 21:49 pm
Necesito ayuda con este codigo.... el problema esta en q cuando lo corro y selecciono la primera opcion el programa se cierra una vez ingresado los datos......

gracias!!!! por adelantado.....


#include <cstdlib>
#include <iostream>

using namespace std;


struct Persona {
   char Nombre[65];
   char Estado[65];
   int ANacimiento;
 
}plantilla;

int main(int argc, char *argv[])
{
     int opc;
    int r;
   
do
{   
   
   
    system("CLS");     
  cout<< "Selecione Su Opcion:  ";
  cout<< endl;
  cout<< "1. Ingresar Usuario. ";
  cout<<endl;
  cout<< "2. Ver Usuario. ";
  cout<<endl;
  cout<< "3. Salir. ";
  cout<<endl;
  cout<< "Opcion: ";
  cin>> opc;
  cout<<endl;
 system("CLS");
 
      
      
    
    switch (opc)
    {
           
 case 1:
   
       cout<< "introduzca nombre: ";
    cout<<endl;
    cin>> plantilla.Nombre;
     system("CLS");
   
    cout<< "introduzca estado: ";
    cout<<endl;
    cin>> plantilla.Estado;
     system("CLS");
     
     cout<< "introduzca estado: ";
    cout<<endl;
    cin>> plantilla.ANacimiento;
     system("CLS");
   
   
    break;
 
 

   
 case 2:
     
      break;
     
     
     
     
case 3:
 cout<< "De Verdad Desea Salir?";
cout<< endl;
cout<< "1.Si.                        2.No.";
cout<<endl;
cout<< "opcion: ";
cin>>r;   
if (r==1)
{
         return EXIT_SUCCESS;
         } else {
                break;
         }
         
         
         
         
         
         
         
         
         
           }
   
     
       } while (1<opc || opc>3);
}


Título: Re: Ayuda codigo C++ (Agenda)
Publicado por: Nobody12 en 25 Febrero 2011, 22:27 pm
Añade un "cin.get();" al final del código.  :P


Título: Re: Ayuda codigo C++ (Agenda)
Publicado por: L0R0 en 25 Febrero 2011, 22:59 pm
Sigue igual.... No me funciona..... O no lo estoy poniendo dnd va.....  :-\


Título: Re: Ayuda codigo C++ (Agenda)
Publicado por: Nobody12 en 25 Febrero 2011, 23:17 pm
Creo que iría así:

       } while (1<opc || opc>3);
cin.get();
return 0;
}


Título: Re: Ayuda codigo C++ (Agenda)
Publicado por: L0R0 en 25 Febrero 2011, 23:42 pm
No q va no me funciona........  :-\


Título: Re: Ayuda codigo C++ (Agenda)
Publicado por: Edu en 25 Febrero 2011, 23:55 pm
Dices q sale cuando presionas el 1 por primera vez? o en el segundo menu?


Título: Re: Ayuda codigo C++ (Agenda)
Publicado por: L0R0 en 26 Febrero 2011, 00:02 am
No.... yo selecciono la opcion nº 1 y pasa normal, el problema ocurre despues de q ingreso los datos q me pide (nombre, estado y año). Al terminar de ingresar los datos el programa se cierra,,, y lo que quiero q haga es q se devuelva al menu principal una vez ingresado los datos para seguir con la agenda,,, pero q va llega hasta ahi..... No se si el problema sea con la estructura o el ciclo q utilic.............


Título: Re: Ayuda codigo C++ (Agenda)
Publicado por: Edu en 26 Febrero 2011, 00:18 am
Yo no se C++ pero se C# y algo puedo entender, al principio no te entendia porq yo lo haria de otra forma, pero bueno fijate cambiando la verificacion del while porq me parece rara xD


Título: Re: Ayuda codigo C++ (Agenda)
Publicado por: L0R0 en 26 Febrero 2011, 00:33 am
Gracias por la orientacion!!!! si el error estaba en l while:

en vez de:
         }
   
     
       } while (1<opc || opc>3);
}

tenia q colocar:

         }
   
     
     } while (1<opc||3>opc);
       
   
}




Título: Re: Ayuda codigo C++ (Agenda)
Publicado por: L0R0 en 26 Febrero 2011, 00:35 am
No bueno yo soy nuevo en esto,,,, no se casi nada de C++... pero toi en eso pss.... de repente me va a ver molestando mas a menudo por aki!!! Gracias a valenciano013 y a XXX-ZERO-XXX por la ayuda!!!!


Título: Re: Ayuda codigo C++ (Agenda)
Publicado por: Edu en 26 Febrero 2011, 00:46 am
Mmmm no se bien q es lo q quieres hacer vs pero fijate bien lo del while a ver si en vez de || tienes q poner && , haz pruebas

Confunde q pongas 1<opc en vez de opc>1 , ese ultimo se lee mejor ;)


Título: Re: Ayuda codigo C++ (Agenda)
Publicado por: L0R0 en 26 Febrero 2011, 01:10 am
Si esa es la forma normal pss pero si lo coloco asi no me corre..... tonces probe con esa otra forma..... pero ni idea pq.....  :-\


Título: Re: Ayuda codigo C++ (Agenda)
Publicado por: dato000 en 27 Febrero 2011, 02:06 am
aqui esta:

No supe como dar la salida si el usuario digita 2. NO en la opcion 3. Salida, lo demás funciona.

Si el problema persiste por lo de "opc >,opc <, opc =", puede que sea por el compilador o el firewall, o hasta el SO que usas viejo.

No soy un experto, pero trate de hacer lo que pude.

Pa eso estamos, no??

Código:

#include <cstdlib>
#include <iostream>

using namespace std;


struct Persona {
   char Nombre[65];
   char Estado[65];
   int ANacimiento;
  
}plantilla;

int main(int argc, char *argv[]) //WHAT THE FUCK IS THIS??? SI TIENES TIEMPO EXPLICAME!! fuerteizquierdo@hotmail.com
{
     int opc;
  
     do
     {    
            system("CLS");      
            cout<< "Selecione Su Opcion:  ";
            cout<< endl;
            cout<< "1. Ingresar Usuario. ";
            cout<<endl;
            cout<< "2. Ver Usuario. ";
            cout<<endl;
            
            //para este yo no preguntaria nuevamente, si el usuario eligio salir,
            //pues que salga, para eso esta la opcion
            cout<< "3. Salir. ";
            cout<<endl;
            cout<< "Opcion: ";
            cin>> opc;
            cout<<endl;
            system("CLS");
                  
            switch (opc)
            {
                          
                 case 1:
                    
                        //viejo, al usuario no se le debe limpiar la pantalla solo por dos o tres lineas
                        //no abuses del CLS pues cualquiera que no sepa del codigo queda confundido.
                        //el profesor seguramente joderia por eso
                        cout<< "introduzca nombre: "; cout<<endl;
                        cin>> plantilla.Nombre;
                        cout<<endl;cout<<endl;
                        cout<< "introduzca estado: "; cout<<endl;
                        cin>> plantilla.Estado;
                        cout<<endl;cout<<endl;
                        
                        //especifica que sea un año!!!
                        cout<< "introduzca AÑO DE nacimiento: "; cout<<endl;
                        cin>> plantilla.ANacimiento;
                        cout<<endl;cout<<endl;
                        
                        //porque continue y no break...pues porque solo asi me funciono.
                        continue;
                  
                
                
                    
                 case 2:
                      
                        continue;
                      
                      
                      
                      
                case 3:
                        
                        //en mi opinion r deberia ir aqui, ya que solo es usado para la opcion de salida
                        //y pues ni pondria esto, solo EXIT y ya!! pa que complicarse!!
                        int r;
                        
                        cout<< "De Verdad Desea Salir?";
                        cout<< endl;
                        cout<< "1.Si.                        2.No.";
                        cout<<endl;
                        cout<< "opcion: ";
                        cin>>r;    
                        if (r==1)
                        {
                                 return EXIT_SUCCESS;
                        }
                        
                        
              }//end del switch
            
              //hay que cambiar el valor de opc pues el programa siempre quedaria
              //con la opcion inicial y quedaria en un ciclo infinito
              opc=0;
              
              //yo rompi con el switch para dar salida, siempre hago eso, es mi return EXIT_SUCCESS
              //limitado a casos switch
              break;
       } while (opc==1 || opc==2); //end del while
}


Dejame darte una sugerencia: SIEMPRE USA COMENTARIOS, AYUDA A UBICARTE EN EL CODIGO, puede que un experto no lo use, pero a mi me funciona para recordar funciones y todo eso.


Título: Re: Ayuda codigo C++ (Agenda)
Publicado por: Edu en 27 Febrero 2011, 23:24 pm
Y acuerdate q el switch tiene un default: podrias usarlo


Título: Re: Ayuda codigo C++ (Agenda)
Publicado por: dato000 en 28 Febrero 2011, 01:02 am
ups, bueno, aún así funciona, digamos que lo mejor es ponerlo.


Título: Re: Ayuda codigo C++ (Agenda)
Publicado por: L0R0 en 11 Marzo 2011, 13:57 pm
Bueno aca esta el codigo ya mas adelantado y con los comentarios,,, Si alguien sabe como puedo hacer en este caso para eliminar a algun contacto y ordenarlos todos nuevamente,, me ayudaria muchisimo!!!

Código
  1. #include <cstdlib>
  2. #include <iostream>
  3.  
  4. using namespace std;
  5.  
  6.  
  7. struct Persona {
  8. char Nombre[65];
  9. char apellido[65];
  10. char numcel[65];
  11.  
  12. }plantilla[100];
  13.  
  14. int main(int argc, char *argv[])
  15. {
  16. int opc;
  17. /// variables opcion nuevo contacto:
  18. int r;
  19. int cont=0; /// sirve tambien para opcion 2 y 3.
  20. /// variable opcion lista de contactos:
  21. int a;
  22. int tr;
  23. //// variable opcion de salida:
  24. int s;
  25. //// variables opcion buscador:
  26. char buscont[65];
  27. int bus1;
  28. int bus2;
  29. int vrf=0;
  30.  
  31. //// Variables opcion Opciones:
  32. int op;
  33. int rep;
  34. ///variable opciones 1 modificar
  35. int g;
  36. int val;
  37. int va;
  38. int mod;
  39. int op1;
  40. // variables opciones 2 borrar
  41. int del;
  42. int delm;
  43. int h;
  44.  
  45. do
  46. {
  47.  
  48.  
  49. system("CLS");
  50. cout<< "Selecione Su Opcion: ";
  51. cout<< endl;
  52. cout<< "1. Agregar un nuevo Contacto. ";
  53. cout<<endl;
  54. cout<< "2. Ver la lista de Contactos agregados. ";
  55. cout<<endl;
  56. cout<< "3. Buscar contacto por nombre. ";
  57. cout<<endl;
  58. cout<< "4. Opciones. ";
  59. cout<<endl;
  60. cout<< "5. Salir. ";
  61. cout<<endl;
  62. cout<< "Opcion: ";
  63. cin>> opc;
  64. cout<<endl;
  65. rep=0;
  66. system("CLS");
  67.  
  68.  
  69.  
  70.  
  71. switch (opc)
  72. {
  73. //Comienza agregar contactos.
  74. case 1:
  75.  
  76. r=cont++;
  77.  
  78.  
  79. cout<< "Agregue el nombre del nuevo contacto: ";
  80. cin>> plantilla[r].Nombre;
  81. cout<<endl;
  82.  
  83. cout<< "Agregue el apellido del nuevo contacto: ";
  84. cin>> plantilla[r].apellido;
  85. cout<<endl;
  86.  
  87. cout<< "Agregue el numero movil del nuevo contacto: ";
  88. cin>> plantilla[r].numcel;
  89. cout<<endl;
  90. system("CLS");
  91.  
  92. break;
  93. //termina agregar contactos.
  94.  
  95.  
  96. case 2:
  97. //comienza lista de contactos.
  98. cout<< "Lista de Contactos: ";
  99. cout<< endl;
  100.  
  101. if (cont==0)
  102. {
  103. cout<< "Lista de contactos vacia.";
  104. cout<<endl;
  105. system ("PAUSE");
  106. system("CLS");
  107. break;
  108. } else {
  109.  
  110.  
  111. for(a=0;a<r+1;a++)
  112.  
  113. {
  114. tr=a;
  115.  
  116. cout<< tr+1<< ". ";
  117. cout<< plantilla[a].Nombre;
  118. cout<<endl;
  119. }
  120. system("PAUSE");
  121. system("CLS");
  122. break;
  123.  
  124. }
  125. //termina lista de contactos.
  126. case 3:
  127. //comienza buscar contactos.
  128. cout<< "Igrese el nombre que desea buscar: ";
  129. cin>> buscont;
  130. cout<<endl;
  131.  
  132. if (cont==0)
  133. {
  134. cout<< "Lista de contactos vacia.";
  135. cout<<endl;
  136. system ("PAUSE");
  137. system("CLS");
  138. break;
  139. }
  140.  
  141. for(bus1=0;bus1<r+1;bus1++)
  142. {
  143. if (strcmp(plantilla[bus1].Nombre,buscont)==0)
  144. { cout<<"Resulatdo Encontrado: "<<endl;
  145. cout<<"Nombre: "<<plantilla[bus1].Nombre<<endl;
  146. cout<<"Apellido: "<<plantilla[bus1].apellido<<endl;
  147. cout<<"Numero Movil: "<<plantilla[bus1].numcel<<endl;
  148. vrf=1;
  149. cout<<endl;
  150.  
  151.  
  152. }
  153.  
  154. }
  155. if (vrf==0)
  156. {
  157. cout<<"Resultado No Encontrado....."<<endl;
  158.  
  159.  
  160. }
  161.  
  162.  
  163.  
  164.  
  165.  
  166. system ("PAUSE");
  167.  
  168. vrf=0;
  169.  
  170. break;
  171. //termina buscar contactos.
  172. case 4:
  173. //comienza opciones.
  174. do
  175. {
  176. system ("CLS");
  177. cout<<"Eliga su nueva opcioc: "<<endl;
  178. cout<<"1.Modificar contacto."<<endl;
  179. cout<<"2.Borrar contacto. "<<endl;
  180. cout<<"3.Menu principal. "<<endl;
  181. cout<<"Opcion: ";
  182. cin>>op;
  183. system ("CLS");
  184.  
  185.  
  186. switch(op)
  187. {
  188. case 1:
  189. //modificar contactos:
  190. //lista contactos:
  191. cout<< "Lista de Contactos: ";
  192. cout<< endl;
  193.  
  194. if (cont==0)
  195. {
  196. cout<< "Lista de contactos vacia.";
  197. cout<<endl;
  198. system ("PAUSE");
  199. system("CLS");
  200. break;
  201. } else {
  202.  
  203.  
  204. for(a=0;a<r+1;a++)
  205.  
  206. {
  207. tr=a;
  208.  
  209. cout<< tr+1<< ". ";
  210. cout<< plantilla[a].Nombre;
  211. cout<<endl;
  212. }
  213. }
  214. //fin lista contactos.
  215. //pregunta 1:
  216. cout<<"Seleccione el numero del contacto que desea modificar: ";
  217. cin>>val;
  218. mod=val-1;
  219. g=r+1;
  220.  
  221.  
  222. if (val<=g)
  223. {
  224. //opcion modificar contacto:
  225. do
  226. {
  227. system ("CLS");
  228. cout<<"Contacto:"<<endl;
  229. cout<<"1. Nombre: "<<plantilla[mod].Nombre<<endl;
  230. cout<<"2. Apellido: "<<plantilla[mod].apellido<<endl;
  231. cout<<"3. Numero Movil: "<<plantilla[mod].numcel<<endl;
  232. cout<<"4. Menu anterior."<<endl;
  233. cout<<"Seleccione la opcion que desea modificar: ";
  234. cin>>op1;
  235. switch (op1)
  236. {
  237. case 1:
  238. cout<< "Modifique el nombre del contacto: ";
  239. cin>> plantilla[mod].Nombre;
  240. cout<<endl;
  241. break;
  242. case 2:
  243. cout<< "Modifique el apellido del contacto: ";
  244. cin>> plantilla[mod].apellido;
  245. cout<<endl;
  246. break;
  247. case 3:
  248. cout<< "Modifique el numero de movil del contacto: ";
  249. cin>> plantilla[mod].numcel;
  250. cout<<endl;
  251. break;
  252. case 4:
  253. rep=1;
  254. break;
  255. }
  256. }while (rep==0);//fin modificar contacto.
  257. }else {cout<<"El contacto no existe."<<endl;
  258. system ("PAUSE");}
  259. rep=0;
  260. //fin pregunta 1.
  261.  
  262.  
  263. break;
  264. //fin modificar contactos.
  265. case 2:
  266. //borrar contactos.
  267. //lista contactos:
  268. cout<< "Lista de Contactos: ";
  269. cout<< endl;
  270.  
  271. if (cont==0)
  272. {
  273. cout<< "Lista de contactos vacia.";
  274. cout<<endl;
  275. system ("PAUSE");
  276. system("CLS");
  277. break;
  278. } else {
  279.  
  280.  
  281. for(a=0;a<r+1;a++)
  282.  
  283. {
  284. tr=a;
  285.  
  286. cout<< tr+1<< ". ";
  287. cout<< plantilla[a].Nombre;
  288. cout<<endl;
  289. }
  290. }
  291. //fin lista contactos.
  292.  
  293. //pregunta 2:
  294. cout<<"Seleccione el numero del contacto que desea eliminar: ";
  295. cin>>del;
  296. delm=del-1;
  297. h=r+1;
  298.  
  299. if (del<=h)
  300. {
  301. plantilla[delm].Nombre;
  302. plantilla[delm].apellido;
  303. plantilla[delm].numcel;
  304. break;
  305. }else {cout<<"El contacto no existe."<<endl;
  306. system ("PAUSE");}
  307. //fin regunta 2.
  308. system ("PAUSE");
  309.  
  310.  
  311. break;
  312. //fin borrar contactos.
  313. case 3:
  314. rep=1;
  315. break;
  316.  
  317. }
  318.  
  319.  
  320.  
  321. }while (rep==0);
  322.  
  323. break;
  324.  
  325. //termina opciones
  326.  
  327. case 5:
  328. //comienza salida.
  329. cout<< "De Verdad Desea Salir?";
  330. cout<< endl;
  331. cout<< "1.Si. 2.No.";
  332. cout<<endl;
  333. cout<< "opcion: ";
  334. cin>>s;
  335. if (s==1)
  336. {
  337. return EXIT_SUCCESS;
  338. } else {
  339. break;
  340. }
  341.  
  342.  
  343.  
  344.  
  345.  
  346. }
  347.  
  348.  
  349. } while (1<opc || 5>opc);
  350.  
  351. //termina salida.
  352. }
  353.  


Título: Re: Ayuda codigo C++ (Agenda)
Publicado por: rommel89 en 11 Marzo 2011, 23:58 pm
Tu error esta es que utilisas la misma variable tanto para elegir las opciones como para salir: dices que si presiono uno opcion=1; y me lleva al caso 1: hago las acciones de ese caso y cuando salgo pregunta en el while() que si opcion es  menor 1 y como 1 no es menor a uno se sale.  y por eso siempre que entres al caso 1 simepre te saldras del programa


Título: Re: Ayuda codigo C++ (Agenda)
Publicado por: L0R0 en 12 Marzo 2011, 07:04 am
No, pero es que ya no tengo problemas con el menu, bueno en realidad si, uno y es que cuando ingreso una letra el programa colapsa, pero de resto no hay problemas con el menu o por lo menos yo lo corro en mi PC y no tengo problemas....

La duda que tengo ahora es de como debo hacer para eliminar un contacto de la lista y que luego la agenda los vuelva a ordenar..... he pensado hacerlo con strings pero que va la logica no me da.

Quisiera saber si hay alguna forma de que el arreglo quede otra vez sin ningun valor ya sea un entero o una letra, etc.... Gracias!!!


Título: Re: Ayuda codigo C++ (Agenda)
Publicado por: Akai en 13 Marzo 2011, 23:21 pm
La clase "String" es para cadenas de caracteres, no te va a servir si quieres, por ejemplo, tener una lista de objetos de tu clase o estructura persona.

Para ello, tienes dos opciones, utilizar las clases std::list (http://www.cplusplus.com/reference/stl/list/) o std::vector (http://www.cplusplus.com/reference/stl/vector/) Si optas por esto, tendrás un contenedor donde tus objetos estarán y podrás insertar o quitar de forma dinámica, pero ordenarlos queda a tu tarea (a menos que sobrecargues los operadores necesarios para que la lista o el vector los puedan ordenar con sus métodos, mira las referencias que te he puesto).

O bien, implementarte tu propia estructura de tipo lista para poder hacer inserciones y eliminar elementos de forma dinámica y ordenarlos a tu antojo.

PD: mauriciodelos, ¿qué haces citando el post anterior y no diciendo nada más?


Título: Re: Ayuda codigo C++ (Agenda)
Publicado por: mauriciodelos en 14 Marzo 2011, 00:28 am
No, pero es que ya no tengo problemas con el menu, bueno en realidad si, uno y es que cuando ingreso una letra el programa colapsa
para solucionar eso tendrías que crear un booleano que se active si se teclea algo que no es. Por ejemplo:


Código
  1. ---------
  2.  
  3. // variables opciones 2 borrar
  4. int del;
  5. int delm;
  6. int h;
  7. bool error; /*Declará el booleano (puede ser acá o antes del main, pero siempre antes del do while)*/
  8.  
  9. do
  10. {
  11. system("CLS");
  12. if (error==true){cout<<"Elija una opción real\n\n";error=false;}/*Este if detecta si se activó el error y te da un consejo, también vuelve a error a false por las dudas*/
  13. cout<< "Selecione Su Opcion: ";
  14. cout<< endl;
  15. cout<< "1. Agregar un nuevo Contacto. ";
  16. cout<<endl;
  17. cout<< "2. Ver la lista de Contactos agregados. ";
  18. cout<<endl;
  19. cout<< "3. Buscar contacto por nombre. ";
  20. cout<<endl;
  21. cout<< "4. Opciones. ";
  22. cout<<endl;
  23. cout<< "5. Salir. ";
  24. cout<<endl;
  25. cout<< "Opcion: ";
  26. cin>> opc;
  27. cout<<endl;
  28. if(opc>1||opc>6){error=true;} /*Este if verifica si se escribió alguna de las opciones, o sea, si no es un número del 1 al 6, pone la bandera de error en verdadero y avisa que hay un error*/
  29. rep=0;
  30. system("CLS");
  31.  
  32. ---------------------------------------
  33.  
  34. }
  35.  
  36.  
  37. } while (opc!=5); /*A este while yo lo cambiaría así para que sólo salga cuando presionas la opción 5.*/
  38.  
  39. //termina salida.
  40.  
  41.  


Citar
La duda que tengo ahora es de como debo hacer para eliminar un contacto de la lista y que luego la agenda los vuelva a ordenar..... he pensado hacerlo con strings pero que va la logica no me da. Quisiera saber si hay alguna forma de que el arreglo quede otra vez sin ningun valor ya sea un entero o una letra, etc.... Gracias!!!

Para borrar todos los datos de algun array:

Código
  1. strcpy(nombreDelArrayAborrar,"\0");

Y para acomodarlos podrías crear alguna función que al borrar un contacto, copie el siguiente  a ese lugar, y así sucesivamente hasta acomodarlos todos. ej:

Código
  1. int copiar=NumeroContactoBorrado;//Al elegir cual borrar deberías guardar la selección.
  2.  
  3. strcpy(contacto[copiar],contacto.nombre[copiar+1])//Se copiaría el contenido del siguiente contacto.
  4. strcpy(contacto.nombre[copiar+1],"\0")//Borrar el que ya copiaste
  5. copiar++ //Subir en 1 el numero a copiar, o sea, el que ya copiaste y borraste, lo preparás para copiarle el siguiente.

PD: mauriciodelos, ¿qué haces citando el post anterior y no diciendo nada más?

Jajajajajjajajajaj. Perdón, es que estaba respondiendo y en vez de presionar alt+p para previsualizar, aprete alt+s. Y ni si quiera había empezado.



Título: Re: Ayuda codigo C++ (Agenda)
Publicado por: L0R0 en 14 Marzo 2011, 16:58 pm
Gracias a Akai y a mauriciodelos por su ayuda!!!

Bueno hic lo del menu con el boleano y me sigue dando el miso error, no pude solucionarlo con eso..... Por otro lado lo del uso del strcpy me ayudo muchiisimo auqnue no es lo que buscaba para la opcion borrar ya que busco algo que lo borre definitivo, de esta forma borra el contenido pero sigue ocupando ese espacio del arreglo creo q mas bien en vez de borrarlo lo sustituyo el valor por un espacio (Y lo que busko es que lo anule por completo), pero para ordenar me resulto perfecto....
 
Y aki de verdad no entendi mucho de lo que me hablaste pero ya toi investigando sobre eso.......

Aki esta como va el codigo ya modificado:

Código:
#include <cstdlib>
#include <iostream>

using namespace std;


struct Persona {
   char Nombre[65];
   char apellido[65];
   char numcel[65];

}plantilla[100];

int main(int argc, char *argv[])
{
    int opc;
    /// variables opcion nuevo contacto:
    int r;
    int cont=0; /// sirve tambien para opcion 2 y 3.
    /// variable opcion lista de contactos:
    int a;
    int tr;
    //// variable opcion de salida:
    int s;
    //// variables opcion buscador:
    char buscont[65];
    int bus1;
    int bus2;
    int vrf=0;
   
    //// Variables opcion Opciones:
    int op;
    int rep;
    ///variable opciones 1 modificar
     int g;
     int val;
     int va;
     int mod;
     int op1;
     // variables opciones 2 borrar
   int del;
   int delm;
   int h;
   int rsp2;
   int copiar;
   int a1;
   
do
{   
   
   
  system("CLS");     
  cout<< "Selecione Su Opcion:  ";
  cout<< endl;
  cout<< "1. Agregar un nuevo Contacto. ";
  cout<<endl;
  cout<< "2. Ver la lista de Contactos agregados. ";
  cout<<endl;
  cout<< "3. Buscar contacto por nombre. ";
  cout<<endl;
  cout<< "4. Opciones. ";
  cout<<endl;
  cout<< "5. Salir. ";
  cout<<endl;
  cout<< "Opcion: ";
  cin>> opc;
  cout<<endl;
  rep=0;
  system("CLS");
 


 
    switch (opc)
    {
     //Comienza agregar contactos.     
 case 1:

    r=cont++;
   
   
    cout<< "Agregue el nombre del nuevo contacto: ";
    cin>> plantilla[r].Nombre;
    cout<<endl;
   
    cout<< "Agregue el apellido del nuevo contacto: ";
    cin>> plantilla[r].apellido;
    cout<<endl;
     
    cout<< "Agregue el numero movil del nuevo contacto: ";
    cin>> plantilla[r].numcel;
    cout<<endl;
    system("CLS");
   
    break;
    //termina agregar contactos.

   
 case 2:
      //comienza lista de contactos.
       cout<< "Lista de Contactos: ";
      cout<< endl;
     
      if (cont==0)
      {
               cout<< "Lista de contactos vacia.";
               cout<<endl;
               system ("PAUSE");
               system("CLS");
               break;
               } else {
     
     
      for(a=0;a<r+1;a++)
     
   {
      tr=a;
     
      cout<< tr+1<< ". ";
      cout<< plantilla[a].Nombre;
      cout<<endl;
     }
      system("PAUSE");
       system("CLS");
      break;
     
     }
      //termina lista de contactos.
case 3:
     //comienza buscar contactos.
     cout<< "Igrese el nombre que desea buscar: ";
     cin>> buscont;
     cout<<endl;
     
       if (cont==0)
      {
               cout<< "Lista de contactos vacia.";
               cout<<endl;
               system ("PAUSE");
               system("CLS");
               break;
               }
     
     for(bus1=0;bus1<r+1;bus1++)
     {
                               if (strcmp(plantilla[bus1].Nombre,buscont)==0)
   { cout<<"Resulatdo Encontrado: "<<endl;
   cout<<"Nombre: "<<plantilla[bus1].Nombre<<endl;
   cout<<"Apellido: "<<plantilla[bus1].apellido<<endl;
   cout<<"Numero Movil: "<<plantilla[bus1].numcel<<endl;
   vrf=1;
   cout<<endl;
 
   
                               }
                               
                               }
                               if (vrf==0)
                               {
                                          cout<<"Resultado No Encontrado....."<<endl;
                                       
                                         
                                          }
                               
                               
                               
     
     
      system ("PAUSE");
     
     vrf=0;
     
     break;
//termina buscar contactos.
case 4:
     //comienza opciones.
    do
    {
     system ("CLS");
     cout<<"Eliga su nueva opcioc: "<<endl;
     cout<<"1.Modificar contacto."<<endl;
     cout<<"2.Borrar contacto. "<<endl;
     cout<<"3.Menu principal. "<<endl;
     cout<<"Opcion: ";
     cin>>op;
     system ("CLS");
     
     
     switch(op)
     {
     case 1:
          //modificar contactos:
                      //lista contactos:
      cout<< "Lista de Contactos: ";
      cout<< endl;
     
      if (cont==0)
      {
               cout<< "Lista de contactos vacia.";
               cout<<endl;
               system ("PAUSE");
               system("CLS");
               break;
               } else {
     
     
      for(a=0;a<r+1;a++)
     
   {
      tr=a;
     
      cout<< tr+1<< ". ";
      cout<< plantilla[a].Nombre;
      cout<<endl;
     }
                     }
                     //fin lista contactos.
                     //pregunta 1:
                     cout<<"Seleccione el numero del contacto que desea modificar: ";
                     cin>>val;
                     mod=val-1;
                     g=r+1;
                   
                   
                    if (val<=g)
                     {
                               //opcion modificar contacto:
                     do
                     {
                     system ("CLS");
                     cout<<"Contacto:"<<endl;
                     cout<<"1. Nombre: "<<plantilla[mod].Nombre<<endl;
                     cout<<"2. Apellido: "<<plantilla[mod].apellido<<endl;
                     cout<<"3. Numero Movil: "<<plantilla[mod].numcel<<endl;
                     cout<<"4. Menu anterior."<<endl;
                     cout<<"Seleccione la opcion que desea modificar: ";
                     cin>>op1;
                     switch (op1)
                     {
                            case 1:
                                 cout<< "Modifique el nombre del contacto: ";
                                 cin>> plantilla[mod].Nombre;
                                 cout<<endl;
                                 break;
                            case 2:
                                 cout<< "Modifique el apellido del contacto: ";
                                 cin>> plantilla[mod].apellido;
                                 cout<<endl;
                                 break;
                            case 3:
                                 cout<< "Modifique el numero de movil del contacto: ";
                                 cin>> plantilla[mod].numcel;
                                 cout<<endl;
                                 break;
                            case 4:
                                 rep=1;
                                 break;
                            }
                     }while (rep==0);//fin modificar contacto.
                     }else {cout<<"El contacto no existe."<<endl;
                            system ("PAUSE");}
                     rep=0;
                     //fin pregunta 1.
                     
                     
           break;
           //fin modificar contactos.
     case 2:
          //borrar contactos.
          //lista contactos:
           cout<< "Lista de Contactos: ";
      cout<< endl;
     
      if (cont==0)
      {
               cout<< "Lista de contactos vacia.";
               cout<<endl;
               system ("PAUSE");
               system("CLS");
               break;
               } else {
     
     
      for(a=0;a<r+1;a++)
     
   {
      tr=a;
     
      cout<< tr+1<< ". ";
      cout<< plantilla[a].Nombre;
      cout<<endl;
     }
                     }
                     //fin lista contactos.
                     
                     //pregunta 2:
                     cout<<"Seleccione el numero del contacto que desea eliminar: ";
                     cin>>del;
                     delm=del-1;
                     h=r+1;
                     
                     if (del<=h)
                     {
                                system("CLS");
                                cout<< "Estas seguro que deseas borar el contacto selecionado?"<<endl;
                                cout<< "Nombre: "<<plantilla[delm].Nombre<<endl;
                                cout<< "Apellido: "<<plantilla[delm].apellido<<endl;
                                cout<< "Numero Movil: "<<plantilla[delm].numcel<<endl;
                                 cout<< "1.Si                    2.No"<<endl;
                               
                                cin>>rsp2;
                                cout<<endl;
                               
                                if (rsp2==1)
                                {
                               
                                strcpy(plantilla[delm].Nombre,"\0");
                                strcpy(plantilla[delm].apellido,"\0");
                                strcpy(plantilla[delm].numcel,"\0");
                                system ("PAUSE");
                                copiar=delm;
                                for (a1=delm;a1<r+1;a1++)
                                {
                                    strcpy(plantilla[copiar].Nombre,plantilla[copiar+1].Nombre);
                                    strcpy(plantilla[copiar].apellido,plantilla[copiar+1].apellido);
                                    strcpy(plantilla[copiar].numcel,plantilla[copiar+1].numcel);
                                    copiar++;
                                   
                                }
                                r=cont-2;
                               
                                break;
                                } else {break;}
                               
                     }else {cout<<"El contacto no existe."<<endl;
                            system ("PAUSE");
                            }
                     //fin regunta 2.
                     
         
         
           break;
           //fin borrar contactos.
     case 3: 
          rep=1;
           break; 
           
     }
     
     
     
}while (rep==0);

 break;

//termina opciones
           
case 5:
     //comienza salida.
 cout<< "De Verdad Desea Salir?";
cout<< endl;
cout<< "1.Si.                        2.No.";
cout<<endl;
cout<< "opcion: ";
cin>>s;   
if (s==1)
{
         return EXIT_SUCCESS;
         } else {
                break;
         }
         

         
         
         
           }
   
     
     } while (1<opc || 5>opc);
       
    //termina salida.
}


Título: Re: Ayuda codigo C++ (Agenda)
Publicado por: L0R0 en 22 Marzo 2011, 14:45 pm
Bueno ya el codigo esta casi listo, ya esta terminada la opcion de borrado, aunque el programa sigue presentando el mismo problema con el menu .... Pero tengo otra duda, he estado investigando sobre como hacer para que el programa guarde los contactos en un archivo y asi no tener q copiar los contactos cada vez q se corra el programa...... El resultado de mi investigacion han sido mas interrogantes q soluciones, por eso cualquier sugerencia que tengan seria muy buena!!!!

Aki les dejo el codigo de la agenda ya corregido:

Código:
#include <cstdlib>
#include <iostream>

using namespace std;


struct Persona {
   char Nombre[65];
   char apellido[65];
   char numcel[65];

}plantilla[100];

int main(int argc, char *argv[])
{
    int opc;
    /// variables opcion nuevo contacto:
    int r;
    int cont=0; /// sirve tambien para opcion 2 y 3.
    int camb=0;
    int f;
    /// variable opcion lista de contactos:
    int a;
    int tr;
    //// variable opcion de salida:
    int s;
    //// variables opcion buscador:
    char buscont[65];
    int bus1;
    int bus2;
    int vrf=0;
   
    //// Variables opcion Opciones:
    int op;
    int rep;
    ///variable opciones 1 modificar
     int g;
     int val;
     int va;
     int mod;
     int op1;
     // variables opciones 2 borrar
   int del;
   int delm;
   int h;
   int rsp2;
   int copiar;
   int a1;
   
do
{   
   
   
  system("CLS");     
  cout<< "Selecione Su Opcion:  ";
  cout<< endl;
  cout<< "1. Agregar un nuevo Contacto. ";
  cout<<endl;
  cout<< "2. Ver la lista de Contactos agregados. ";
  cout<<endl;
  cout<< "3. Buscar contacto por nombre. ";
  cout<<endl;
  cout<< "4. Opciones. ";
  cout<<endl;
  cout<< "5. Salir. ";
  cout<<endl;
  cout<< "Opcion: ";
  cin>> opc;
  cout<<endl;
  rep=0;
  system("CLS");
 


 
    switch (opc)
    {
     //Comienza agregar contactos.     
 case 1:


    r=cont++;
   
   
    if (camb==1)
    {
                r--;
                f=r+1;
               
          cout<< "Agregue el nombre del nuevo contacto: ";
    cin>> plantilla[f].Nombre;
    cout<<endl;
   
    cout<< "Agregue el apellido del nuevo contacto: ";
    cin>> plantilla[f].apellido;
    cout<<endl;
     
    cout<< "Agregue el numero movil del nuevo contacto: ";
    cin>> plantilla[f].numcel;
    cout<<endl;
    system("CLS");
   
   
                                    strcpy(plantilla[r].Nombre,plantilla[f].Nombre);
                                    strcpy(plantilla[r].apellido,plantilla[f].apellido);
                                    strcpy(plantilla[r].numcel,plantilla[f].numcel);
                                    copiar++;
                                   
                               
   
    break;     
                }
   
   
    cout<< "Agregue el nombre del nuevo contacto: ";
    cin>> plantilla[r].Nombre;
    cout<<endl;
   
    cout<< "Agregue el apellido del nuevo contacto: ";
    cin>> plantilla[r].apellido;
    cout<<endl;
     
    cout<< "Agregue el numero movil del nuevo contacto: ";
    cin>> plantilla[r].numcel;
    cout<<endl;
    system("CLS");
   
    break;
    //termina agregar contactos.

   
 case 2:
      //comienza lista de contactos.
       cout<< "Lista de Contactos: ";
      cout<< endl;
     
      if (cont==0)
      {
               cout<< "Lista de contactos vacia.";
               cout<<endl;
               system ("PAUSE");
               system("CLS");
               break;
               } else {
     
     
      for(a=0;a<r+1;a++)
     
   {
      tr=a;
     
      cout<< tr+1<< ". ";
      cout<< plantilla[a].Nombre;
      cout<<endl;
     }
      system("PAUSE");
       system("CLS");
      break;
     
     }
      //termina lista de contactos.
case 3:
     //comienza buscar contactos.
     cout<< "Igrese el nombre que desea buscar: ";
     cin>> buscont;
     cout<<endl;
     
       if (cont==0)
      {
               cout<< "Lista de contactos vacia.";
               cout<<endl;
               system ("PAUSE");
               system("CLS");
               break;
               }
     
     for(bus1=0;bus1<r+1;bus1++)
     {
                               if (strcmp(plantilla[bus1].Nombre,buscont)==0)
   { cout<<"Resulatdo Encontrado: "<<endl;
   cout<<"Nombre: "<<plantilla[bus1].Nombre<<endl;
   cout<<"Apellido: "<<plantilla[bus1].apellido<<endl;
   cout<<"Numero Movil: "<<plantilla[bus1].numcel<<endl;
   vrf=1;
   cout<<endl;
 
   
                               }
                               
                               }
                               if (vrf==0)
                               {
                                          cout<<"Resultado No Encontrado....."<<endl;
                                       
                                         
                                          }
                               
                               
                               
     
     
      system ("PAUSE");
     
     vrf=0;
     
     break;
//termina buscar contactos.
case 4:
     //comienza opciones.
    do
    {
     system ("CLS");
     cout<<"Eliga su nueva opcioc: "<<endl;
     cout<<"1.Modificar contacto."<<endl;
     cout<<"2.Borrar contacto. "<<endl;
     cout<<"3.Menu principal. "<<endl;
     cout<<"Opcion: ";
     cin>>op;
     system ("CLS");
     
     
     switch(op)
     {
     case 1:
          //modificar contactos:
                      //lista contactos:
      cout<< "Lista de Contactos: ";
      cout<< endl;
     
      if (cont==0)
      {
               cout<< "Lista de contactos vacia.";
               cout<<endl;
               system ("PAUSE");
               system("CLS");
               break;
               } else {
     
     
      for(a=0;a<r+1;a++)
     
   {
      tr=a;
     
      cout<< tr+1<< ". ";
      cout<< plantilla[a].Nombre;
      cout<<endl;
     }
                     }
                     //fin lista contactos.
                     //pregunta 1:
                     cout<<"Seleccione el numero del contacto que desea modificar: ";
                     cin>>val;
                     mod=val-1;
                     g=r+1;
                   
                   
                    if (val<=g)
                     {
                               //opcion modificar contacto:
                     do
                     {
                     system ("CLS");
                     cout<<"Contacto:"<<endl;
                     cout<<"1. Nombre: "<<plantilla[mod].Nombre<<endl;
                     cout<<"2. Apellido: "<<plantilla[mod].apellido<<endl;
                     cout<<"3. Numero Movil: "<<plantilla[mod].numcel<<endl;
                     cout<<"4. Menu anterior."<<endl;
                     cout<<"Seleccione la opcion que desea modificar: ";
                     cin>>op1;
                     switch (op1)
                     {
                            case 1:
                                 cout<< "Modifique el nombre del contacto: ";
                                 cin>> plantilla[mod].Nombre;
                                 cout<<endl;
                                 break;
                            case 2:
                                 cout<< "Modifique el apellido del contacto: ";
                                 cin>> plantilla[mod].apellido;
                                 cout<<endl;
                                 break;
                            case 3:
                                 cout<< "Modifique el numero de movil del contacto: ";
                                 cin>> plantilla[mod].numcel;
                                 cout<<endl;
                                 break;
                            case 4:
                                 rep=1;
                                 break;
                            }
                     }while (rep==0);//fin modificar contacto.
                     }else {cout<<"El contacto no existe."<<endl;
                            system ("PAUSE");}
                     rep=0;
                     //fin pregunta 1.
                     
                     
           break;
           //fin modificar contactos.
     case 2:
          //borrar contactos.
          //lista contactos:
           cout<< "Lista de Contactos: ";
      cout<< endl;
     
      if (cont==0)
      {
               cout<< "Lista de contactos vacia.";
               cout<<endl;
               system ("PAUSE");
               system("CLS");
               break;
               } else {
     
     
      for(a=0;a<r+1;a++)
     
   {
      tr=a;
     
      cout<< tr+1<< ". ";
      cout<< plantilla[a].Nombre;
      cout<<endl;
     }
                     }
                     //fin lista contactos.
                     
                     //pregunta 2:
                     cout<<"Seleccione el numero del contacto que desea eliminar: ";
                     cin>>del;
                     delm=del-1;
                     h=r+1;
                     
                     if (del<=h)
                     {
                                system("CLS");
                                cout<< "Estas seguro que deseas borar el contacto selecionado?"<<endl;
                                cout<< "Nombre: "<<plantilla[delm].Nombre<<endl;
                                cout<< "Apellido: "<<plantilla[delm].apellido<<endl;
                                cout<< "Numero Movil: "<<plantilla[delm].numcel<<endl;
                                 cout<< "1.Si                    2.No"<<endl;
                               
                                cin>>rsp2;
                                cout<<endl;
                               
                                if (rsp2==1)
                                {
                               
                                strcpy(plantilla[delm].Nombre,"\0");
                                strcpy(plantilla[delm].apellido,"\0");
                                strcpy(plantilla[delm].numcel,"\0");
                                system ("PAUSE");
                                copiar=delm;
                                for (a1=delm;a1<r+1;a1++)
                                {
                                    strcpy(plantilla[copiar].Nombre,plantilla[copiar+1].Nombre);
                                    strcpy(plantilla[copiar].apellido,plantilla[copiar+1].apellido);
                                    strcpy(plantilla[copiar].numcel,plantilla[copiar+1].numcel);
                                    copiar++;
                                   
                                }
                                r=cont-2;
                                camb=1;
                               
                                break;
                                } else {break;}
                               
                     }else {cout<<"El contacto no existe."<<endl;
                            system ("PAUSE");
                            }
                     //fin regunta 2.
                     
         
         
           break;
           //fin borrar contactos.
     case 3: 
          rep=1;
           break; 
           
     }
     
     
     
}while (rep==0);

 break;

//termina opciones
           
case 5:
     //comienza salida.
 cout<< "De Verdad Desea Salir?";
cout<< endl;
cout<< "1.Si.                        2.No.";
cout<<endl;
cout<< "opcion: ";
cin>>s;   
if (s==1)
{
         return EXIT_SUCCESS;
         } else {
                break;
         }
         

         
         
         
           }
   
     
     } while (1<opc || 5>opc);
       
    //termina salida.
}