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

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


  Mostrar Mensajes
Páginas: [1]
1  Programación / Programación C/C++ / [C]Equivalencia de una referencia de C++ a C? en: 19 Noviembre 2018, 09:01 am
Estoy pasando un código de funciones que permiten agregar y eliminar elementos de una lista enlazada hacia "C" sin embargo me encontré con algo que no sé como reemplazar al declarar la función:
Código
  1. void insertarLista(Nodo *&lista,int n)
el "&" la referencia de la lista al quitarlo no hay error de sintaxis pero no funciona como debe de ser al emplear otra funcion "mostrar".

Este es el código en C++
Código
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. struct Nodo{
  5. int dato;
  6. Nodo *siguiente;
  7. };
  8. void insertarLista(Nodo *&,int);
  9.  
  10. int main(int argc, char *argv[]) {
  11. Nodo *lista = NULL;
  12. int dato;
  13.  
  14. cout<<"Digite un numero: ";
  15. cin>>dato;
  16.  
  17. insertarLista(lista,dato);
  18.  
  19. return 0;
  20. }
  21.  
  22. void insertarLista(Nodo *&lista,int n){
  23. Nodo *nuevo_nodo = new Nodo();
  24. nuevo_nodo->dato = n;
  25.  
  26. Nodo *aux1 = lista;
  27. Nodo *aux2;
  28.  
  29. while((aux1 != NULL) && (aux1->dato <n)){
  30. aux2 = aux1;
  31. aux1 = aux1->siguiente;
  32. }
  33. if(lista == aux1){
  34. lista = nuevo_nodo;
  35. }
  36. else{
  37. aux2->siguiente = nuevo_nodo;
  38. }
  39. nuevo_nodo->siguiente = aux1;
  40.  
  41. cout<<"\tElemento "<<n<<" insertado a la lista\n";
  42.  
  43. }

Y en C
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef struct Nodo{
  5. int dato;
  6. struct Nodo *siguiente;
  7. }Nodo;
  8.  
  9. void insertarLista(Nodo *&,int);
  10.  
  11. int main(int argc, char *argv[]) {
  12. Nodo *lista = NULL;
  13. int dato;
  14.  
  15. printf("Digite un numero: ");
  16. scanf("%d",&dato);
  17. insertarLista(lista,dato);
  18.  
  19.  
  20.  
  21. return 0;
  22. }
  23.  
  24. void insertarLista(Nodo *&lista,int n){
  25. Nodo *nuevo_nodo = (Nodo*)malloc(sizeof(int));
  26. nuevo_nodo->dato = n;
  27.  
  28. Nodo *aux1 = lista;
  29. Nodo *aux2;
  30.  
  31. while((aux1 != NULL) && (aux1->dato <n)){
  32. aux2 = aux1;
  33. aux1 = aux1->siguiente;
  34. }
  35. if(lista == aux1){
  36. lista = nuevo_nodo;
  37. }
  38. else{
  39. aux2->siguiente = nuevo_nodo;
  40. }
  41. nuevo_nodo->siguiente = aux1;
  42.  
  43. printf("Elemento %d insertado a la lista\n",n);
  44. }
2  Programación / Programación C/C++ / duda sobre elevar la potencia sin usar la multiplicación? en: 18 Septiembre 2018, 04:16 am
Si uso la multiplicación el código me quedaría así:
Código
  1. #include <stdio.h>
  2.  
  3. int main(int argc, char *argv[]) {
  4. int acum=1,i,base,exponente;
  5.  
  6. printf("Digite la base: ");
  7. scanf("%d",&base);
  8. printf("Digite el exponente: ");
  9. scanf("%d",&exponente);
  10.  
  11.  
  12.  
  13. for(i=1;i<=exponente;i++){
  14. acum=acum*base; //el "*" no debe ser usado
  15. }
  16. printf("Resultado: %d",acum);
  17. return 0;
  18. }

Si se tiene que crear un código sin usar los operadores o condiciones de multiplicación o funciones de exponentes y la única regla es usar sumas.

Lo que se me ocurre es cambiar el acum=1 a acum=0.
acum= acum*base; a acum= acum+base;
pero en el ciclo for (i=1;i<=exponente;i++) el valor de exponente no me ayuda quedaría así mas o menos:

Código
  1. #include <stdio.h>
  2.  
  3. int main(int argc, char *argv[]) {
  4. int acum=0,i,base,exponente;
  5.  
  6. printf("Digite la base: ");
  7. scanf("%d",&base);
  8. printf("Digite el exponente: ");
  9. scanf("%d",&exponente);
  10.  
  11.  
  12.  
  13. for(i=1;i<=exponente;i++){ /*la cantidad de veces que se sumara la base es lo que se pondra en el exponente. */
  14. acum=acum+base;
  15. }
  16. printf("Resultado: %d",acum);
  17. return 0;
  18. }

Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines