[ Foro de C++ ]

como cerrar este ciclo

30-Mar-2023 02:42
Invitado (David)
1 Respuestas

como cerrar este ciclo básicamente este code,  la primera eliminación en el arreglo  si se ejecuta de manera correcta, pero ya cuando quiero hacerlo por segunda vez me manda a la nada, básicamente quiero que se repita el numero de n veces hasta que se llegue al vacío aquí les dejo el código en c++ espero que me resuelvan mi duda :c
#include <iostream>
using namespace std;
int main (){
string A [5],s;
int i=-1;
int d=0;
A[0]="Ana";
A[1]="Lola";
A[2]="Rosa";
A[3]="Alis";
A[4]="Juan";

cout<<"Dame elemento a eliminar: ";
cin>>s;
do{
i++;
}while(s!=A[i] and i<4);
A[i]="";
while(i<4 and A[i+1]!=""){
A[i]=A[i+1];
A[i+1]="";
i++;
}
while(d<4){
cout<< A[d]<<endl;
d++;
}
cout<<"el dato "+ s + " ha sido eliminado"<<endl;
       int e;

cout<<"desearias eliminar mas elementos? \n 1 si\n 2 no\t";
cin>>e;

if(e<2){
cout<<"Dame elemento a eliminar: ";
cin>>s;
do{
i++;
}while(s!=A[i] and i<3);
A[i]="";
while(i<4 and A[i+1]!=""){
A[i]=A[i+1];
A[i+1]="";
i++;
}
while(d<3){
cout<< A[d]<<endl;
d++;
}
cout<<"el dato "+ s + " ha sido eliminado"<<endl;
}
else{
cout<<"pues ya hasta hay "<<endl;
}

return 0;
}


06-Apr-2023 19:31
Invitado (roger)

hola david

en tu código
- no muestras la lista para elegir un elemento, hay que hacerlo a ciegas
(hazlo con una función)
- obligas a eliminar al menos un elemento
- si la cadena es erronea eliminas el último elemento ¿¿??
- si quiere eliminar otro elemeto dices que lo ha eliminado pero
no lo muestras
- solo dejas eliminar dos elementos,¿ porque no más ?
- duplicas código (mala práctica,  ¿ y si fuesen 300 elementos?)
- usas números mágicos como el 5 el 4 y el 3 (mala práctica)
deberías calcular el número de elementos y usar ese dato
para los bucles por ej:
int tam_lista = sizeof lista / sizeof lista[0];
para usar:
for(int i=0; i<tam_lista; i++) ... ;
en tu caso al usar el 4 y el 3 dejas el último elemento sin
comprobar, pero como si es, como si es un error, eliminas
el último. parece que funcione bien (pero no)

si haces el calculo del nº de elementos y cambias la inicialización con
más o menos elementos, no tienes que cambiar todos los usos de ese
dato, el programa funcionará bien ya que haces el cálculo después de
inicializar y lo usas en los bucles


usar funciones ayuda a leer y mantener el código, también
ayuda a la depuración de errores

saludos ;-)






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)