elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Contar numeros positivos
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Contar numeros positivos  (Leído 3,509 veces)
karmi

Desconectado Desconectado

Mensajes: 21



Ver Perfil
Contar numeros positivos
« en: 10 Diciembre 2010, 18:14 pm »

necesito contar los numeros positvos, pero no me queda el metodo, como es? ayuda
Código
  1.  
  2. #include <iostream.h>
  3. #include <windows.h>
  4. #include <conio.h>
  5.  
  6. struct Nodo
  7. {
  8. Nodo *izq;
  9. int dato;
  10. Nodo *der;
  11. };
  12.  
  13. class arbolbinario
  14. {
  15. private:
  16. Nodo *raiz;
  17. public:
  18. arbolbinario()
  19. {
  20. raiz=NULL;
  21. }
  22. void insertar(int d)
  23. {
  24. Nodo *nuevo;
  25. nuevo = new Nodo();
  26. nuevo->izq= NULL;
  27. nuevo->dato=d;
  28. nuevo->der=NULL;
  29.  
  30. if (raiz==NULL)
  31. {
  32. raiz=nuevo;
  33. }
  34. else
  35. {
  36. Nodo *temp, *a;
  37. int b=0;
  38. temp = raiz;
  39. a = NULL;
  40. while(temp!=NULL)
  41. {
  42. a = temp;
  43. if(nuevo->dato<temp->dato)
  44. {
  45. temp = temp->izq;
  46. b=1;
  47. }
  48. else if (nuevo->dato>temp->dato)
  49. {
  50. temp = temp->der;
  51. b=2;
  52. }
  53. }
  54. if (b==1)
  55. {
  56. a->izq=nuevo;
  57. }
  58. else if (b==2)
  59. {
  60. a->der=nuevo;
  61. }
  62. }
  63.  
  64. }
  65.  
  66. ******************************************AQUI
  67. int cpositivos()
  68.  
  69. {
  70. int z=0;
  71. Nodo *recorrer;
  72. recorrer = raiz;
  73.  
  74. if (recorrer!=NULL)
  75. {
  76. do
  77. {
  78. if(recorrer->dato>0)
  79. {
  80. recorrer=recorrer->izq;
  81. z=z+1;
  82. }
  83.  
  84. }while(recorrer->dato!=NULL);
  85. if(recorrer!=NULL)
  86. {
  87. do
  88. {
  89. if(recorrer->dato>0)
  90. {
  91. recorrer=recorrer->der;
  92. z=z+1;
  93.  
  94. }
  95. }while(recorrer->dato!=NULL);
  96.  
  97. cout<<z;
  98. }
  99. else
  100. {
  101. cout << "arbol vacia" << endl;
  102. }
  103. return z;
  104. }
  105. }
  106.  
  107. ***************************************************
  108.  
  109.  
  110. void MostrarIn()
  111. {
  112. Nodo *temp;
  113. temp = raiz;
  114. MostrarInorden (temp);
  115. }
  116. void MostrarInorden(Nodo *T)
  117. {
  118. if (T!=NULL)
  119. {
  120. MostrarInorden(T->izq);
  121. cout << T->dato << endl;
  122. MostrarInorden(T->der);
  123. }
  124. }
  125. void MostrarPr()
  126. {
  127. Nodo *temp;
  128. temp = raiz;
  129. MostrarPreorden (temp);
  130. }
  131. void MostrarPreorden(Nodo *T)
  132. {
  133. if (T!=NULL)
  134. {
  135. cout << T->dato << endl;
  136. MostrarPreorden(T->izq);
  137. MostrarPreorden(T->der);
  138. }
  139. }
  140. void mostrarpost()
  141. {
  142. Nodo *temp;
  143. temp=raiz;
  144. mostrarpostorden(temp);
  145.  
  146. }
  147. void mostrarpostorden(Nodo *T)
  148. {
  149. if (T!=NULL)
  150. {
  151. cout<<T->dato<<endl;
  152. mostrarpostorden(T->der);
  153. mostrarpostorden(T->izq);
  154. }
  155. }
  156.  
  157.  
  158. };
  159.  
  160. void main (void)
  161. {
  162. arbolbinario numeros;
  163. int op, n;
  164. do
  165. {
  166. system("cls");
  167. cout << "A R B O L B I N A R I O" << endl<<endl;
  168. cout << "1.- Insertar nodo"<< endl;
  169. cout << "2.- Mostrar inorden"<< endl;
  170. cout << "3.- Mostrar preorden"<< endl;
  171. cout << "4.- Mostrar postorden"<< endl;
  172. cout << "5.- contar numeros negativos"<< endl;
  173. cout << "6.- Salir"<< endl << endl;
  174.  
  175. cout << "Elige una opcion-> ";
  176. cin >> op;
  177.  
  178. system ("cls");
  179. switch(op)
  180. {
  181. case 1:
  182. cout << "Introduce el numero: ";
  183. cin >> n;
  184. numeros.insertar(n);
  185. break;
  186. case 2:
  187. cout << "Inorden"<<endl;
  188. numeros.MostrarIn();
  189. break;
  190. case 3:
  191. cout << "Preorden"<<endl;
  192. numeros.MostrarPr();
  193. break;
  194. case 4:
  195. cout << "Postorden"<<endl;
  196. numeros.mostrarpost();
  197.  
  198. break;
  199. case 5:
  200. cout<<"el total de positivos es: "<<endl;
  201. numeros.cpositivos();
  202.  
  203. default:
  204.  
  205. cout << "Bye!!!"<<endl;
  206. }
  207. getch();
  208.  
  209. }while(1);
  210.  
  211. }
  212.  


« Última modificación: 10 Diciembre 2010, 18:16 pm por karmi » En línea

Littlehorse
All the world's a stage
Moderador
***
Desconectado Desconectado

Mensajes: 2.714


Nie Dam Sie


Ver Perfil WWW
Re: Contar numeros positivos
« Respuesta #1 en: 10 Diciembre 2010, 18:15 pm »

Utiliza títulos descriptivos por favor.

Lee las reglas


En línea

An expert is a man who has made all the mistakes which can be made, in a very narrow field.
do-while


Desconectado Desconectado

Mensajes: 1.276


¿Habra que sacarla de paseo?


Ver Perfil
Re: Contar numeros positivos
« Respuesta #2 en: 10 Diciembre 2010, 18:46 pm »

¡Buenas!

El algoritmo es bien sencillo. Una funcion recursiva que devuelve un entero. Si el nodo es negativo, devuelves directamente el resultado de evaluar el subarbol mayor. Si es positivo, devuelves 1 + el resultado de evaluar el subarbol izquierdo + el resultado de evaluar el sibarbol derecho. Si el nodo es nulo, devuelves cero:

Código
  1.  
  2. unsigned long numpositivos(Nodo *raiz)
  3. {
  4.    if(!raiz)
  5.        return 0;
  6.  
  7.    if((raiz->dato < 0)
  8.        return numpositivos(raiz->derecha);
  9.  
  10.    return 1 + numpositivos(raiz->derecha) + numpositivo(raiz->izquierda);
  11. }
  12.  
En línea

- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Batch] Función que suma números positivos mayores a 32 bits. v1.2
Scripting
0x0309 1 4,472 Último mensaje 14 Abril 2009, 23:39 pm
por M a t t
[Problema] Programa para averiguar números pares entre 2 números
Programación Visual Basic
Dreamaker 3 5,839 Último mensaje 21 Mayo 2010, 23:45 pm
por Shell Root
Contador de números positivos y negativos
Java
K3NS4N 2 7,275 Último mensaje 23 Mayo 2014, 13:50 pm
por engel lex
contar numeros de un numero
Programación C/C++
Beginner Web 5 3,163 Último mensaje 18 Abril 2019, 16:03 pm
por CalgaryCorpus
[Python3] Ayuda contar numeros en string
Scripting
reconFito 6 3,827 Último mensaje 31 Diciembre 2019, 16:29 pm
por tincopasan
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines