Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Alape04 en 11 Junio 2016, 03:42 am



Título: Ayuda!, Hacer el siguiente algoritmo en c++
Publicado por: Alape04 en 11 Junio 2016, 03:42 am
Se dispone de una lista de N nombres (20) de alumnos. Escribir un algoritmo que
solicite el nombre de un alumno y busque en la lista (array) si el nombre está en la
lista.

Espero pronta respuesta :D

PD: Estoy comenzando con esto de programar, utilizo el zinjai.


Título: Re: Ayuda!, Hacer el siguiente algoritmo en c++
Publicado por: engel lex en 11 Junio 2016, 03:43 am
donde tienes tu duda y que llevas hecho? (no se hacen tareas)


Título: Re: Ayuda!, Hacer el siguiente algoritmo en c++
Publicado por: Alape04 en 11 Junio 2016, 03:47 am
Pues estuve haciendo lo siguiente.
Me falta es buscar el nombre creo

Código:
#include <stdio.h>
#include <iostream>

using namespace std;

int main()
{
char n1[]="Maria Lucia";
char n2[]="Juan Sebastian";
char n3[]="Jhonatan Miguel";
char n4[]="Jose Raul";
char n5[]="Karen Paola";
char n6[]="Samuel Dario";
char n7[]="Jose Fernando";
char n8[]="Jorge Andres";
char n9[]="Karol Vanessa";
char n10[]="Yefer David";
char n11[]="Denis del Carmen";
char n12[]="Juan Felipe";
char n13[]="Antonio Carlos";
char n14[]="Augusto Daniel";
char n15[]="Laura Vanessa";
char n16[]="Jhovana Sofia";
char n17[]="Daniel Enith";
char n18[]="Laura Camila";
char n19[]="Natalia Sofia";
char n20[]="Cesar Esteban";

int nom;
cout<<("DIGITE NOMBRE QUE DESEA BUSCAR")<<endl;
cout<<("Nombre: ");cin>>nom;


if(strcmp(nom,'n1')==0){
cout << "Aparece en lista." << endl;
}
else {
cout << "No aparece" << endl;
}
return 0;
}


Título: Re: Ayuda!, Hacer el siguiente algoritmo en c++
Publicado por: engel lex en 11 Junio 2016, 03:53 am
uff hombre... te saltaste la clase sobre arreglos! jejeje

está muy mal, realmente mal... tienes que declarar un arreglo bidimensional de tipo char (o un arreglo unidimensinal de tipo string si está paermitido) de 20 de largo y popularlo con los nombres...

recomiendo leer esto
http://sistemas.ing.ula.ve/~m.camejo/tutorial/tutorial/tut3-1.html (http://sistemas.ing.ula.ve/~m.camejo/tutorial/tutorial/tut3-1.html)
http://c.conclase.net/curso/?cap=010 (http://c.conclase.net/curso/?cap=010)

sin contar lo que haces con el strcmp... comparas lo que te dieron con 'n1' (literalmente el texto "n1")

leete esto
http://c.conclase.net/librerias/?ansifun=strcmp (http://c.conclase.net/librerias/?ansifun=strcmp)

por otro lado te hará falta un ciclo para la búsqueda


Título: Re: Ayuda!, Hacer el siguiente algoritmo en c++
Publicado por: Alape04 en 11 Junio 2016, 03:57 am
Bueno gracias por la ayuda.

Mi pregunta seria, ¿sabes del ciclo de la búsqueda?


Título: Re: Ayuda!, Hacer el siguiente algoritmo en c++
Publicado por: engel lex en 11 Junio 2016, 04:03 am
cualquiera, depende de como quieras implementarlo podrías hacer de esta manera (lo más simple)

Código
  1. for(i=0;i<cantidad_elementos;i++){
  2.  if(strcmp(busqueda,elemento[i]) == 0){
  3.    break;
  4.  }
  5.  if(i==cantidad_elementos){
  6.    cout << "elemento no encontrado" << endl;
  7.  }else{
  8.    cout << "elemento encontrado en posicion" << i << endl;
  9.  }
  10. }


Título: Re: Ayuda!, Hacer el siguiente algoritmo en c++
Publicado por: AlbertoBSD en 11 Junio 2016, 17:30 pm
La forma correcta de declarar el arreglo estatico de nombres es:

Código
  1. char *nombres[] = {"Maria Lucia","Juan Sebastian","Jhonatan Miguel""Jose Raul","Karen Paola","Samuel Dario","Jose Fernando","Jorge Andres","Karol Vanessa","Yefer David","Denis del Carmen","Juan Felipe","Antonio Carlos","Augusto Daniel","Laura Vanessa","Jhovana Sofia","Daniel Enith","Laura Camila","Natalia Sofia","Cesar Esteban"};
  2. //Las variables deben ser mas descriptivas, a no se que solo tu vallas a ver el codigo, y aun asi no es recomendable

Respecto al algorimo de busqueda, basandonos en el avance de Engel lex y con algunos cambios quedaria asi:

Código
  1. int encontrado = 0,i  = 0;
  2. while(i<cantidad_elementos){
  3. if(strcmp(busqueda,nombres[i]) == 0){
  4. encontrado = 1;
  5. break;
  6. }
  7. i++;
  8. }
  9. if(encontrado == 1){
  10. cout << "elemento encontrado en posicion" << i << endl;
  11. }else{
  12. cout << "elemento no encontrado" << endl;
  13. }




Título: Re: Ayuda!, Hacer el siguiente algoritmo en c++
Publicado por: Alape04 en 11 Junio 2016, 19:27 pm
Gracias, ahora entiendo un poco mas :)


ME QUEDO DE LA SIGUIENTE FORMA Y CORRE EL PROGRAMA :D

Código:
#include <iostream> 
#include <stdio.h>
#include <string.h>
using namespace std;

int main() {

char *lista[20]={"Maria Lucia","Juan Sebastian","Jhonatan Miguel","Jose Raul","Karen Paola","Samuel Dario","Jose Fernando","Jorge Andres","Karol Vanessa","Yefer David","Denis del Carmen","Juan Felipe","Antonio Carlos","Augusto Daniel","Laura Vanessa","Jhovana Sofia","Daniel Enith","Laura Camila","Natalia Sofia","Cesar Esteban"},lista2[25];

cout<<("Escriba el nombre del alumno\n")<<endl;
gets(lista2);

int encontrado= 0,i= 0;
while(i<20){
if(strcmp(lista2,lista[i]) == 0){
encontrado = 1;
break;
}
i++;
}
if(encontrado == 1){
cout << "El alumno se encuentra en la lista"<<endl;
}else{
cout <<"El alumno no se encuentra registrado en la lista."<<endl;
}

   return 0;
}