• Viernes 29 de Marzo de 2024, 01:09

Mostrar Mensajes

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


Mensajes - herzdark

Páginas: [1] 2
1
C/C++ / Re:Duda con puntero a función en lenguaje C.
« en: Viernes 27 de Septiembre de 2013, 03:17 »

Claro, es mucho mas eficiente trabajar directamente con las variables que con una copia, aunque hay algo que debes tener en cuenta, todo depende de lo que necesites hacer, si no vas a realizar modificaciones en los valores, o si los modificas, pero no te afecta en el resultado que debas obtener, entonces puedes usar directamente apuntadores. Si vas a realizar modificaciones en los valores pero por alguna razon te afecta el resultado que necesitas obtener, o necesitas conservar los valores anteriores, entonces necesitas trabajar con una copia si o si.


tenes bastante razon igualmente ya por habito cualquier struct la paso con apuntadores y si por alguna razon no desea modifarlo uso la palabra const y para lo otro la trato de usar local asi vive dentro de la vida util de la función



Cita de: DanielC#
Porque tu código utilizas los *(* contiene el valor de la variable y & contiene la dirección de memoria de la misma)sin declarar y asignar los apuntadores y funciona?.-

No entendi bien la pregunta, podrias elaborarla o explicarla mejor?

si no entendi mal el esta hablando sobre esto

Código: C
  1. void suma(int *a, int *b, int *res)
  2. {
  3.     *a = 10; *b = 10;
  4.     *res = *a + *b;
  5. }
  6.  

el asterisco (*) delante de cualquier variable tipo puntero significa que el contenido de la posición de memoria que tiene
para que lo entiendas hagamoslo a lo criollo:

suponiendo que en la memoria principal la variable A del main esta en la posición 0x100 y cuando uno llama a una función el compilador crea una porción de memoria para esa invocación y la variable local de la función que se llama A esta en la pos 0x1010 entonces al hacer *a=10 seria decir esto debe asignar 10 al contenido de la variable A pero A es un puntero a una porcion de memoria, entonces toma el contenido de esa variable que es 100 y en esa posición guarda un 10, en otras palabras es una asignación indirecta

2
C/C++ / Re:Duda con puntero a función en lenguaje C.
« en: Jueves 26 de Septiembre de 2013, 22:44 »
excelente explicación profe pero también otra diferencia no sería en el uso de memoria total porque si yo tengo una struct con bastantes campos no es lo mismo pasarlo por copia y duplicar la memoria que pasarlo por puntero y trabajar sobre la misma area de memoria que se habia definido antes? :think:.

ya se que las PC's actuales tienen memoria para derrochar pero a mi me enseñaron que había que exprimir la memoria al máximo xD

3
C/C++ / Re:Estructura y paso por valor en lenguaje C.
« en: Domingo 22 de Septiembre de 2013, 00:39 »
si que lo queres hacer es ingresar los datos dentro de la funcion lo que podes hacer es que devuelva una copia de una estruc agenda
Código: C
  1. agenda ingresar_datos()
  2. {agenda obj;
  3.  obj.orden = 1;
  4.  strcpy(obj.nombre, "Daniel");
  5.  return obj;
  6. }
  7.  

como ves estoy creando una estruct obj dentro de la funcion para guardar la info que se ingrese, si vos no devolvieras esa estrc la informacion se pierde por la vida util de una variable y entro del main lo usarías así:

Código: C
  1. int main()
  2. {
  3.     agenda datos;
  4.    
  5.     datos=ingresar_datos();
  6.     escribir_datos(datos);
  7.    
  8.    
  9.     printf("\n\n Pulse una tecla para cerrar la aplicacion..."); system("PAUSE>NULL");
  10.     return 0;
  11. }
  12.  

espero que hallas entendido, suerte con el aprendizaje

4
HTML / Re:Problema con menu desplegable html y css
« en: Domingo 5 de Mayo de 2013, 00:51 »
creo que si pones el codigo de las listas así seguro se pondrá como en el vídeo

Código: [Seleccionar]
<li>Inicio</li>
 <li>Economia
   <ul class="submenu">
<li>Empresa</li>
<li>Mercado</li>
<li>Bolsa</li>
<li>Banca</li>
</ul>
 </li>
 <li>Cultura
   <ul class="submenu">
        <li>Novela</li>
<li>Comic</li>
<li>Series</li>
<li>Cine</li>
   </ul>
  </li>
 <li>Ciencia
  <ul class="submenu">
<li>Natural</li>
<li>Cosmos</li>
<li>Tierra</li>
<li>Tenis</li>
  </ul>
 </li>
 <li>deportes
   <ul class="submenu">
<li>Futbol</li>
<li>Motor</li>
<li>Basket</li>
   </ul>
  </li>

y en el CSS en el menu>li te falto poner que la posicion sea relativa a la posición de dicho menu

Código: [Seleccionar]
ul{
list-style-type:none;
padding:0;
}

#menu{
width:200px;
}

#menu>li{
  background-color:#4dcdc8;
  border: 1px outset #4bcdc8;
  padding:5px;
  position: relative;
}

.submenu{
top:0;
left:199px;
position:absolute;
display:none;
}

.submenu>li{
background-color:#4dcdc8;
border: 1px outset #4bcdc8;
width:160px;
padding:2px;
}

#menu li:hover{
color:white;
cursor:pointer;
}

#menu li:hover ul{
display:block;
}

5
Java / Re:no puedo ejecutar la funcion while
« en: Martes 19 de Marzo de 2013, 22:51 »
soy muy novato en java pero la class String esta en c++ x eso no seria mejor poner así?

Código: Java
  1. while(control.compareTo("s"))

6
C/C++ / [Código Fuente] Re:Arboles
« en: Lunes 14 de Mayo de 2012, 23:29 »
gracias por el codigo y sabrias como saber si un arbol es AVL?

for(;;)
{
...
}
alguien me podria explicar xq declaran asi la instruccion for????

eso lo q hace es ejecutar en un ciclo infinito el codigo q esta entre llaves y seria lo mismo q poner esto:

Código: C
  1. While(1)
  2. {
  3. }

7
C/C++ / Re:Introducir datos al conjunto, no repetidos
« en: Domingo 13 de Mayo de 2012, 00:05 »
¿que son los TDA o TAD ? :P

¿A que es? un vector?¿ final que es, un contador?

lo que quieres es ir agregando datos a un vector pero que no se puedan repetir datos que ya esten agregados?

Saludos!!

los TDA son Tipos de Datos Abstractos como las estructuras, uniones,etc y si lo q el quiere es ir agregando valores q no esten repetidos, y saudiaz podrías subir el programa completo

8
C/C++ / Re:Rotar un arregle arriba o abajo y hallar la moda.
« en: Viernes 11 de Mayo de 2012, 16:59 »
mm, tu codigo es un poco inentendible, yo lo pondría así, con el printf incluido:

Código: C++
  1. void rotarArriba(int v[], int n)
  2. {int aux=v[0], i;
  3.   for (int i=0; i<n-1; i++)
  4.   {v[i]=v[i+1]; // en la posición i estoy poniendo el valor de la posición siguiente
  5.     printf ("%d",v[i];
  6.   }
  7.  v[n-1]=aux;
  8. }
  9. //---------------------------------------------------------------------------
  10. void rotarAbajo(int v[], int n)
  11. {int aux = v[n-1], i;
  12.  for (int i=n-1; i>0; i--)
  13.   {v[i] = v[i-1]; // en la posición i estoy poniendo el valor de la posición anterior
  14.    printf ("%d";v[i];
  15.   }
  16.  v[0] = aux;
  17. }

9
C/C++ / Re:Duda, Lista Circular
« en: Jueves 1 de Diciembre de 2011, 00:02 »
vos lo q estas usando es una lista doblememente enlazada circular no?, entonces ya cuando el nodo es NULL yo podría así:

Código: C
  1.   if(actual==NULL)
  2.     {actual=new agenda;
  3.       actual->siguiente=actual->anterior=actual; //ahi estaria logrando q el nodo sig y ant se apunte a si mismo (o mejor dicho
  4.       strcpy(actual->nombre,tempnombre); //lo q llamamos circular)
  5.       strcpy(actual->apellido,tempapellido);
  6.       strcpy(actual->telefono,temptelefono);
  7.     }
  8.  

después con el tema de saber el principio y final no se si tu puntero de inicio de lista esta al primer nodo, al ultimo nodo insertado (creo q con este serie medio complicado saber el inicio y final) y ultimo nodo, si usas p/e el primer nodo vos ya tenes tu inicio y final entonces lo unirias así:

Código: C
  1. fin->siguiente=inicio;
  2. inicio->anterior= fin;
  3.  

espero q esto te sirve igualmente hacete el dibujo así me salio a mi

10
Visual C++ / Re:Comprender un código de bucles
« en: Viernes 11 de Noviembre de 2011, 23:37 »
vos tenes q usar el I+1 porque empezaste desde cero, ademas como estas pidiendo el sueldo de un empleado ese empleado no puede ser 0 porque sino no existe, si hubieras empezado con i=1 no tendrías q poner el i+1

11
C/C++ / Re:contar palabras de una cadena de caracteres
« en: Viernes 11 de Noviembre de 2011, 22:06 »
No me gusta revivir temas, pero tengo una duda, y no me gusta quedarme con dudas, y es que soy alumno de primer año
y con suerte lo mas dificil que me han pasado es arreglos y funciones en c y no entiendo ni mitad de sus codigos, pero igual pude hacer un programa que cuenta palabras

Código: [Seleccionar]
#include <stdio.h>

char a[100];

int Calcular_Palabras ()
{
    int palabras=1,contador=0;
   
    while(a[contador] != '\0')
    {if(a[contador] == ' ')
      palabras++;
     contador++;
    }
   
    return palabras;
}

int main (void)
{     
    while (1) {
    printf("\n\tIngrese una cadena: ");
    gets(a);
   
    printf("\n\tEl numero de palabras es: %i\n\n",Calcular_Palabras());
   
    }
   
    return 0;   
}

entonces no entiendo por que ustedes lo hacen tan dificil y con tantas cosas... o sere yo xD

te digo mi experiencia, yo cuando estaba en primer año veia el codigo como lo hiciste vos pero despues cuando vallas pasando los años te exijen q no lo uses con subindices y otras cosas más y respecto a tu codigo la sentencia:

Código: C
  1. int palabra=1;

estas contando una palabra de más por eso empezalo con 0, si no me crees con tu codigo si yo ingresará HOLA A TODOS me retornaría 4 siendo la cantidad de palabras 3

12
C/C++ / Re:numeros capicua
« en: Miércoles 10 de Agosto de 2011, 00:29 »
estas recorriendo toooda la cadena para saber si es capicua, si te pongo el numero 1224 ya a la primera pregunta me da q no es capi entonces mejoraria el codigo q se valla moviendo mientras sean los numeros iguales, y cuando salis del ciclo preguntas si tu valor x == y y retornarias q es capi sino no

en codigo seria así:

Código: C
  1. in capicua(char*num) //1- Capicua y 0- No capicua
  2. {int largo=strlen(num),i=0,med=largo/2;
  3.  while(num[largo]==num[i]&&i<med)
  4.  {i++;
  5.   largo--;
  6.  }
  7.  return num[largo]==num[i];
  8. }      
  9.  

espero q te alla aclarado tu problema y si no enteden algo pregunta

13
C/C++ / Re: acceder al codigo des las librerias
« en: Sábado 30 de Abril de 2011, 00:15 »
puede ser una pregunta tonta pero puedo utilizar la libreria boost en programas en C o solo es para C++?

14
C/C++ / Re: Switch case que muestra 2 veces seguidas el menu
« en: Sábado 30 de Abril de 2011, 00:03 »
Cita de: "sc0tt"
Hola amigos de este foro tan completo:
Estoy haciendo un programa para la facultad (estoy en primer curso de Ingenieria Informatica) y se me plantea este problema en todos los switch case que hago, y es que cuando elijo una opción del menú este me aparece 2 veces en lugar de solo una. No he sido capaz de identificar donde está el error, a ver si alguien es capaz. Aquí os dejo un ejemplo del código fuente que utilizo en un programa:

int main (int argc, const char * argv[])
{
    char menu[] = "n A)Nuevo altan B)Bajan C)Modificaciónn D)Búsqueda por autorn E)Búsqueda por editorialn F)Búsqueda por títulon G)Búsqueda por fechann";
    char opcion;
    struct ficha BIBLIOTECA [LIBROS]={0,0,0,0};
   
   
    do {
      printf("%s",menu);
      scanf("%c",&opcion);
      switch (opcion) {
         case 'A':
                        una_funcion_cualquiera(argumentos);
                        break;
                        case 'B':
                        otra_funcion o código
                        break;
                        case 'Q':
            printf("nnSaliendo.nn");
            break;
}
   } while ('Q' != opcion);
   printf("nnTerminación normal del programa.nn");

   
    return 0;
}

yo n veo ningun drama en el codigo, el menu te aparece despues d q se ejecuto la funcion no?

15
C/C++ / Re: vectores
« en: Lunes 28 de Marzo de 2011, 14:23 »
Cita de: "Checho360"
Cita de: "haddad"
si creo que me esta compilando bien.
ahora, podrias ayudarme regalandome alguna explicacion sobre como hago para unir 2 vectores?
saludos!!

Tienes que explicarte mejor cuando haces preguntas... que es unir dos vectores?

si por lo q yo entiendo y mis pocos conocimientos en materia de programación la unica manera sería creando un nuevo vector, la dimensión de ese vector debería ser la suma de la cantidad de elementos de cada uno de los vectores

vi esto pero no entiendo si estas restando pares o impares

Código: C++
  1.  
  2. for(int x=1;x<cantidad;x=x+2)// <-- aca no estas restando los impares??
  3.   { cout<<x+1<< "-> "<<vector[x]<<endl;
  4.     resta = resta - vector[x];
  5.   }
  6. cout<<"la resta de los pares es "<<resta<<endl;
  7.  
  8.  

16
C/C++ / Re: Como crear programa c++
« en: Lunes 21 de Marzo de 2011, 03:23 »
Cita de: "haddad"
mmm creo que no estoy entendiendo, podrian ser un poco mas claros?

haber como te lo explico nosotros lo q te estamos diciendo es q podes encontrar una relacion entre las letras y los numeros
letra ASCII
  'A'    65
  'B'    66
  'C'    67
  ...  ...

entonces nosotros te decimos si vos al caracter q tenes en la pos i del vector le restas el carac '@' o sea 64 en decimal si es MAYUSCULAS o '`' o 96 en decimal si es MINUSCULAS te daría un valor entero q representa cual es la cantidad de letras q separan ambos caracteres
veamos yo tengo la palabra "BACA" y yo quiero q quede 2131, entonces a cada pos del vector le restamos el caract '@' o 64
'B' - 64 = 66-64 = 2
'A' - 64 = 65-64 = 1
'C' - 64 = 67-64 = 3
'A' - 64 = 65-64 = 1

pero tenes q tener cuidado de diferenciar si una letra es minuscula o mayuscula y para hacer eso podes pregunt así
Código: C
  1. val=(vect[i]>='A'&&vect[i]<='Z')?64:96;
  2.  

espero q hayas entendido  :hola:

17
C/C++ / Re: Como hacer un programa con funciones
« en: Domingo 20 de Marzo de 2011, 04:26 »
Cita de: "yadhira64"
Código: C
  1. int captura()
  2. {
  3.     float r1,r2;
  4.     int num;
  5.     printf("Ingresa el numero:");
  6.     r1 = cua(num);   //el problema es q el compilador no reconoce esta función
  7.     r2 = cub(num);  //idem cua
  8.     printf("El cubo es %.2f y el cua es %.2f",r2,r1);
  9.            //aca te falta devolver algo como tu prototipo dice q devuelve un int deberías devolver el num ingresado o una constante, esto te tira WARNING en el
  10.            //momento de compilar
  11. }
  12.  
  13. float cua(int num)
  14. {
  15.   float res;
  16.   res = num*num
  17.   return res;
  18. }
  19.  
  20. float cub(int num)
  21. {
  22.   float res1;
  23.   res1 = num*num*num
  24.   return res1;
  25. }
  26.  
  27.  
no es recomendable desarrollar las funciones antes q el main xq se pueden generar problemas del tipo de q el compilador no reconozca la funciones, x esa la forma academica y recomendada es esta:

include
define
structs
prototipos de las funciones a usar
main
desarrollo de las funciones

con este forma de programación no tendrías los problemas q tuviste arriba y quedaria así

Código: C
  1. float cub(int); //este es el prototipo de la función cub
  2. float cua(int);             //este es el prototipo de la función cua
  3. int captura();             //este es el prototipo de la función captura
  4.  
  5. int main()
  6. {...}
  7.  
  8. int captura()
  9. {
  10.     float r1,r2;
  11.     int num;
  12.     printf("Ingresa el numero:");
  13.     r1 = cua(num);   //y ahora el compilador reconoce a la función cua
  14.     r2 = cub(num);  //idem cua
  15.     printf("El cubo es %.2f y el cua es %.2f",r2,r1);
  16. }
  17.  
  18. float cua(int num)
  19. {
  20.   float res;
  21.   res = num*num
  22.   return res;
  23. }
  24.  
  25. float cub(int num)
  26. {
  27.   float res1;
  28.   res1 = num*num*num
  29.   return res1;
  30. }
  31.  
  32.  

proba esta forma y espero q lo hallas entendido suerte :hola:  :hola:  :hola:

18
C/C++ / Re: Como crear programa c++
« en: Viernes 18 de Marzo de 2011, 21:01 »
pero no deberia fijarse si la letra q le viene es mayuscula o miniscula ante de restar 64

19
C/C++ / Re: Algoritmo para filtrar las letras mayusculas y minusculas
« en: Jueves 17 de Marzo de 2011, 14:27 »
existen muchas formas d hacerlo pero te voy a decir 2 nada mas
1- es como lo dice amilius
2- usando la función isalpha de la librería ctype.h que devuelve un valor distinto de  si el caracter q le pases sea una letra

Código: C
  1.  
  2. #include <ctype.h>
  3. for(i=0;i<TAM;i++)
  4.  {if(isalpha(arri[i]))
  5.    /*si el valor de arri es una letra hacer lo queres*/
  6.  }
  7.  
  8.  

20
C/C++ / Re: Como crear programa c++
« en: Domingo 13 de Marzo de 2011, 04:24 »
no se hacen las tareas, cuando tengas un codigo se revisa
pero te puedo una pista si puede resolver mediante cadenas de caracteres, espero q te halla ayudado

21
C/C++ / Re: Switch no ejecuta Default
« en: Domingo 13 de Marzo de 2011, 04:19 »
en tu codigo no hay problema el default del switch se ejecuta perfectamente pero no lo ves xq no paras la pantalla, al final del programa pone un system ("PAUSE") q se encuentra en la libreria STDLIB.H o el clrscr() de la libreria CONIO.H y ahora fijate si te anda bien

22
C/C++ / Re: ¿por que me pasa esto?
« en: Domingo 13 de Marzo de 2011, 04:11 »
Cita de: "dark_dang"
Código: C
  1.  
  2. #include <stdlib.h>
  3. #include <stdio.h>
  4.  
  5. int main()
  6. {
  7.    int num;
  8.    scanf("hora en segundos %c /n", num);
  9.    printf("%d",num);
  10.  
  11. system("PAUSE");
  12. }
  13.  
  14.  
 
veamos los errores
1)vos definiste num como entero (int) pero cuando lees lo haces como carácter (char), entonces como quedaría
Código: C
  1. scanf("%d",&num);
  2.  
, ademas cuando lees debes poner la dirección de la variable (&num)
2)la frase hora en segundo no va dentro del scanf eso iría dentro de un printf

despues te quedaría así tu codigo

Código: C
  1.  
  2. #include <stdlib.h>
  3. #include <stdio.h>
  4.  
  5. int main()
  6. {
  7.    int num;
  8.    printf("hora en segundos: ");
  9.    scanf(" %d", &num);
  10.    printf("n%d",num);
  11.  
  12. system("PAUSE");
  13. }
  14.  
  15.  

te recomendaría q leyeras libros de programación en C así aprenderas sobre estos errores q tuviste

23
C/C++ / Re: funcion recursiva! :)
« en: Sábado 12 de Marzo de 2011, 02:13 »
haber función recursiva es una función q se llama a si misma y casi siempre la unica sentencia de validación es el if() pensalo a si, si tu posición sea menor a la cantidad de elementos q lo muestre y llamas a la misma función con los mismos parametros pero con la pos+1 entendes??

24
C/C++ / Re: Código de suma de divisores?
« en: Sábado 5 de Marzo de 2011, 06:47 »
Cita de: "Kenz_M"
se me creo un ciclo infinito con el código que me mandaste :(
no se q hiciste pero probe el codigo q te puse y anda perfecto o lo q vos querias no es hacer eso sino validar el dato a procesar sea positivo no?

25
C/C++ / Re: Código de suma de divisores?
« en: Sábado 5 de Marzo de 2011, 06:24 »
haber si entendi lo q vos queres es pidiendo numeros hasta q el numero ingresado sea neg no? si es así lo unico q debe hacer es cerrar el codigo en una sentencia while

Código: C++
  1.  
  2.    cout << "Introdusca un numero: ";
  3.    cin >> numero;
  4.    while(numero>0)
  5.    {cout<<"Los divisores del numero ingresado son: "<<endl<<endl;
  6.     suma=0; // Almacena la suma de los divisores
  7.     for (int i=1;i<=(numero/2);i++)
  8.      {if (numero%i==0)
  9.        {cout<<i<<endl; //Imprimimos los divisores
  10.         suma=suma+i;
  11.        }
  12.     }
  13.    suma=suma+numero; //Sumamos el numero inicial que es divisor de él mismo
  14.    cout<<numero<<endl<<endl<<endl;
  15.    cout << "La suma de los divisores " << numero << " es: " << suma <<endl<<endl;
  16.    cout << "Introdusca un numero: ";
  17.    cin >> numero;
  18.   }
  19.  
  20.  

esto lo q va a hacer es pedir numeros hasta q se cumpla la condicion de q el numero ingresado sea mayor a 0

Páginas: [1] 2