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

 

 


Tema destacado: Estamos en la red social de Mastodon


  Mostrar Mensajes
Páginas: 1 ... 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 [141] 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 ... 160
1401  Programación / Programación C/C++ / Re: calculadora + interrogatorio en: 2 Diciembre 2011, 19:07 pm
Para eso solo debes crear un menú donde el usuario elija la opción y en base a esta se llame a una de las funciones.

Inténtalo, no es difícil.

Un saludo
1402  Programación / Programación C/C++ / Re: calculadora + interrogatorio en: 2 Diciembre 2011, 18:21 pm
Porque al declarar la funcion:
Código
  1. void fn_programa_b();
Se esta indicando que ella no retorna un valor, si vas a utilizar la sentencia de retorno esta debe ser:
Código
  1. return;

Pero como esta tu programa lo mejor es simplemente eliminarla.

Un saludo
1403  Programación / Programación C/C++ / Re: Pregunta Memoria Dinámica En "Matrices" en: 2 Diciembre 2011, 02:07 am
Se refiere a las dos formas de reservar memoria para emular una matriz.

1) El primer caso es el usual donde se reserva primero un bloque de memoria principal donde se almacenaran las direcciones en memoria del inicio de cada fila. A continuacion se reserva la memoria de cada una de ellas.

Mas o menos asi:
Código
  1. int **mat;
  2. int i;
  3.  
  4. /* ... */
  5.  
  6. /* 10 filas por 20 columnas */
  7. mat = malloc(10 * sizeof *mat);
  8.  
  9. for (i = 0; i < 10; i++)
  10.   mat[i] = malloc(20 * sizeof *mat[i]);

2) El segundo caso ya lo explicaste (me refiero a naderST).

Un saludo
1404  Programación / Programación C/C++ / Re: calculadora + interrogatorio en: 2 Diciembre 2011, 00:23 am
Es posible, la forma mas facil es colocando el codigo de cada programa en una funcion (por supuesto con las correcciones pertinentes).

Un empujon:
Código
  1. #include <iostream>
  2. using std::cout;
  3. using std::endl;
  4.  
  5. #include <cstdio>
  6. using std::printf;
  7. using std::scanf;
  8.  
  9. void fn_programa_a();
  10. void fn_programa_b();
  11.  
  12. int main()
  13. {
  14. fn_programa_a();
  15. fn_programa_b();
  16.  
  17. return 0;
  18. }
  19.  
  20. void fn_programa_a()
  21. {
  22. unsigned long a;
  23. unsigned long b;
  24.  
  25. printf("primer numero:");
  26. scanf("%lu", &a);
  27.  
  28. printf("segon numero:");
  29. scanf("%lu", &b);
  30.  
  31. printf("el resultat es %lu", a+b);
  32. }
  33.  
  34. void fn_programa_b()
  35. {
  36. // codigo del segundo programa ...
  37. }

Dos detalles a considerar: 1) Casi no utilizas las facilidades del lenguaje C++ y 2) El tipo "long long" no existe en C++ estandar (pero si en C99).

Un saludo
1405  Programación / Programación C/C++ / Re: Ayuda con matrices String en: 2 Diciembre 2011, 00:12 am
Como ya te indicaron puedes utilizar un array de strings y para conocer su numero de elementos puedes utilizar el operador "sizeof".

Por ejemplo:
Código
  1. #include <iostream>
  2. using std::cout;
  3. using std::endl;
  4.  
  5. #include <string>
  6. using std::string;
  7.  
  8. int main()
  9. {
  10. string nombre[] = {"Abel", "Benjamin", "Cain", "Daniel"};
  11. size_t num_elem = sizeof nombre / sizeof nombre[0];
  12.  
  13. for (size_t i = 0; i != num_elem; ++i)
  14. cout << "nombre[" << i << "] == " << nombre[i] << endl;
  15.  
  16. return 0;
  17. }

Un saludo
1406  Programación / Programación C/C++ / Re: EOF en archivo antes de su verdadero final en: 1 Diciembre 2011, 23:54 pm
El "char **" que espera la funcion "cargar_fichero" debe ser la direccion en memoria de la variable de tipo "char *" que almacenara la direccion del bloque:
Código
  1. FILE *fp = fopen(argv[i], "rb");
  2. char *contenido;
  3. unsigned long bytes;
  4.  
  5. cargar_fichero(f, &contenido, &bytes);
  6.  
Ello para que asi se puede modificar la variable "contenido" dentro de la funcion "cargar_fichero" (es la emulacion del paso por referencia en C).

Un saludo
1407  Programación / Programación C/C++ / Re: Problema al crear una función a partir de un programa en: 30 Noviembre 2011, 17:37 pm
Esa funcion la debes hacer de forma tal que solo indique si la conversion no es valida (por ejemplo devolviendo -1), quien la llama (la funcion principal en tu caso) se debe hacer cargo de hacer lo necesario (imprimir el mensaje de error).

Mas o menos asi:
Código
  1. #include <stdio.h>
  2.  
  3. int hexadecimal (char car1, char car2);
  4.  
  5. int main(void)
  6. {
  7.   char car1;
  8.   char car2;
  9.   int valor;
  10.   int flag;
  11.  
  12.   while (1){
  13.      puts("Introduzca un valor hexadecimal:");
  14.      scanf(" %c%c", &car1, &car2);
  15.      if (car1 == 'q' && car2 == 'q'){
  16.         printf ("Presione enter para salir\n");
  17.         while (getchar() != '\n')
  18.            ;
  19.         getchar();
  20.         break;
  21.      }else if ((valor = hexadecimal (car1, car2)) == -1)
  22.         printf ("Valor erroneo\n\n");
  23.      else
  24.         printf("0x%c%c == %d\n", car1, car2, valor);
  25.   }
  26.  
  27.   return 0;
  28. }
  29.  
  30. int hexadecimal(char car1, char car2)
  31. {
  32.   char valor1;
  33.   char valor2;
  34.  
  35.   if ('0' <= car1 && car1 <= '9')
  36.      valor1 = car1 - '0';
  37.   else if ('A' <= car1 && car1 <= 'F')
  38.      valor1 = car1 - 'A' + 10;
  39.   else if ('a' <= car1 && car1 <= 'f')
  40.      valor1 = car1 - 'a' + 10;
  41.   else
  42.      return -1;
  43.  
  44.   if ('0' <= car2 && car2 <= '9')
  45.      valor2 = car2 - '0';
  46.   else if ('A' <= car2 && car2 <= 'F')
  47.      valor2 = car2 - 'A' + 10;
  48.   else if ('a' <= car2 && car2 <= 'f')
  49.      valor2 = car2 - 'a' + 10;
  50.   else
  51.      return -1;
  52.  
  53.   return valor1 * 16 + valor2;
  54. }

Un saludo
1408  Programación / Programación C/C++ / Re: ¿como convertir de int a char en C++? en: 29 Noviembre 2011, 00:56 am
Para empezar el fragmento que pones es C. No tienes porque convertirlo antes de enviarlo al archivo ya que puedes hacerlo directamente con:
Código
  1. x = system("dir");
  2.  
  3. /* ... */
  4.  
  5. fprintf(F, "%d\n", x);
Para leerlo solo tienes que utilizar fscanf.

Código
  1. string itoa(int n){
  2. string rtn;
  3. for(rtn="";n>0;rtn.insert(rtn.begin(),n%10+'0'),n/=10);
  4. return rtn;
  5. }
Un problema aqui es que devolveria una cadena vacia (no es necesaria la asignacion inicial ya que todo objeto de la clase string inicia asi) si el numero pasado fuera el cero.

Otra opcion es:
Código
  1. string itoa(int n)
  2. {
  3. string s;
  4. char digit[] = "0123456789";
  5.  
  6. do {
  7. s = digit[n % 10] + s;
  8. }while ((n /= 10) > 0);
  9.  
  10. return s;
  11. }

Otra forma es utilizando clase stringstream:
Código
  1. string itoa(int n)
  2. {
  3. stringstream ss;
  4. string s;
  5.  
  6. ss << n;
  7. ss >> s;
  8.  
  9. return s;
  10. }

Un saludo
1409  Programación / Programación C/C++ / Re: Leer matriz por filas y almacenarla por columnas en: 28 Noviembre 2011, 17:50 pm
Para ayudarte lo mejor es que publiques el codigo fuente del programa completo o al menos las partes donde declaras las variables y realizas las operaciones de lectura y escritura.

Asi a primera vista no se ve bien el fragmento ya que por algun razon lees el numero de filas y columnas como tipo "double" y despues utilizas contadores de tipo "int".

Y si es un solo bloque de memoria no necesitas de dos bucles, basta con uno, mas o menos asi:
Código:
for (i = 0; i <filas * columnas; i++)
   fscanf(fp, "%lf", vect + i);

Pero de nuevo para sacarte de dudas mejor publica el codigo fuente completo.

Edito:

Por alguna (extraña) razon debes procesar columna por columna en lugar de lo usual que es por filas. En ese caso:
Código:
for (i = 0; i < columnas; i++){
   for (j = 0; j < filas; j++)
      fscanf(fp, "%lf", vect + i + (j * columnas));

Un saludo
1410  Programación / Programación C/C++ / Re: Me pueden ayudar programa que solicite un año e indique si es bisiesto o no en: 23 Noviembre 2011, 00:02 am
Solo un detalle: el caracter 'ñ' no es valido como parte del nombre de un objeto (la razon por la que usualmente se ven cosas como "a ni o" y similares).

Un saludo
Páginas: 1 ... 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 [141] 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 ... 160
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines