Ayuda!, Hacer el siguiente algoritmo en c++

Iniciado por Alape04, 11 Junio 2016, 03:42 AM

0 Miembros y 1 Visitante están viendo este tema.

Alape04

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.

engel lex

donde tienes tu duda y que llevas hecho? (no se hacen tareas)
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Alape04

Pues estuve haciendo lo siguiente.
Me falta es buscar el nombre creo

#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;
}

engel lex

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://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

por otro lado te hará falta un ciclo para la búsqueda
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Alape04

Bueno gracias por la ayuda.

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

engel lex

cualquiera, depende de como quieras implementarlo podrías hacer de esta manera (lo más simple)

Código (cpp) [Seleccionar]
for(i=0;i<cantidad_elementos;i++){
  if(strcmp(busqueda,elemento[i]) == 0){
    break;
  }
  if(i==cantidad_elementos){
    cout << "elemento no encontrado" << endl;
  }else{
    cout << "elemento encontrado en posicion" << i << endl;
  }
}
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

AlbertoBSD

La forma correcta de declarar el arreglo estatico de nombres es:

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"};
//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 (c++) [Seleccionar]
int encontrado = 0,i  = 0;
while(i<cantidad_elementos){
if(strcmp(busqueda,nombres[i]) == 0){
encontrado = 1;
break;
}
i++;
}
if(encontrado == 1){
cout << "elemento encontrado en posicion" << i << endl;
}else{
cout << "elemento no encontrado" << endl;
}



Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

Alape04

#7
Gracias, ahora entiendo un poco mas :)


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

#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;
}