Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - jorge.esquibel

#1
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: 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 (cpp) [Seleccionar]
#include <iostream>
using namespace std;

struct Nodo{
int dato;
Nodo *siguiente;
};
void insertarLista(Nodo *&,int);

int main(int argc, char *argv[]) {
Nodo *lista = NULL;
int dato;

cout<<"Digite un numero: ";
cin>>dato;

insertarLista(lista,dato);

return 0;
}

void insertarLista(Nodo *&lista,int n){
Nodo *nuevo_nodo = new Nodo();
nuevo_nodo->dato = n;

Nodo *aux1 = lista;
Nodo *aux2;

while((aux1 != NULL) && (aux1->dato <n)){
aux2 = aux1;
aux1 = aux1->siguiente;
}
if(lista == aux1){
lista = nuevo_nodo;
}
else{
aux2->siguiente = nuevo_nodo;
}
nuevo_nodo->siguiente = aux1;

cout<<"\tElemento "<<n<<" insertado a la lista\n";

}


Y en C
#include <stdio.h>
#include <stdlib.h>

typedef struct Nodo{
int dato;
struct Nodo *siguiente;
}Nodo;

void insertarLista(Nodo *&,int);

int main(int argc, char *argv[]) {
Nodo *lista = NULL;
int dato;

printf("Digite un numero: ");
scanf("%d",&dato);
insertarLista(lista,dato);



return 0;
}

void insertarLista(Nodo *&lista,int n){
Nodo *nuevo_nodo = (Nodo*)malloc(sizeof(int));
nuevo_nodo->dato = n;

Nodo *aux1 = lista;
Nodo *aux2;

while((aux1 != NULL) && (aux1->dato <n)){
aux2 = aux1;
aux1 = aux1->siguiente;
}
if(lista == aux1){
lista = nuevo_nodo;
}
else{
aux2->siguiente = nuevo_nodo;
}
nuevo_nodo->siguiente = aux1;

printf("Elemento %d insertado a la lista\n",n);
}
#2
Si uso la multiplicación el código me quedaría así:
#include <stdio.h>

int main(int argc, char *argv[]) {
int acum=1,i,base,exponente;

printf("Digite la base: ");
scanf("%d",&base);
printf("Digite el exponente: ");
scanf("%d",&exponente);



for(i=1;i<=exponente;i++){
acum=acum*base; //el "*" no debe ser usado
}
printf("Resultado: %d",acum);
return 0;
}


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:

#include <stdio.h>

int main(int argc, char *argv[]) {
int acum=0,i,base,exponente;

printf("Digite la base: ");
scanf("%d",&base);
printf("Digite el exponente: ");
scanf("%d",&exponente);



for(i=1;i<=exponente;i++){ /*la cantidad de veces que se sumara la base es lo que se pondra en el exponente. */
acum=acum+base;
}
printf("Resultado: %d",acum);
return 0;
}