|
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 - desorden
26
« en: Lunes 29 de Septiembre de 2003, 02:18 »
La solución que publiqué no es correcta. Además de los casos que no contemplaba, no resuelve otros -por ejemplo 289 256 N=16-. La verdad es que me puse a programar sin pensar mucho. A ver si antes de que juank publique su solución, resuelvo el problema.
27
« en: Domingo 28 de Septiembre de 2003, 01:29 »
Tengo una solución, aunque no creo que sea demasiado buena:P
Calcula los gatos que no trabajan si existe más de un sombrero y los gatos que trabajan son más de 1.
28
« en: Lunes 23 de Junio de 2003, 00:20 »
Mmmmm...
Si introduces 1, ¿es distinto de 2 ó 3? Sí. Si introduces 2, ¿es distinto de 1 ó 3? Sí. Si introduces 3, ¿es distinto de 1 ó 2? Sí. Si introduces cualquier otro número, ¿es distinto de 1, 2 ó 3? Sí.
desorden "¿Y el Madrid qué? ¿Otra vez campeón de liga?"
29
« en: Lunes 5 de Mayo de 2003, 16:00 »
Originalmente publicado por juank char tabla[20][81]; char **p; p = tabla;
¡Ojo! char tabla[20][81] char (*p)[81]; p = tabla;
Ahora sí  Aunque un vector "equivale" a un puntero, una matriz no "es igual" que un puntero a puntero sino a un vector de punteros.
30
« en: Domingo 4 de Mayo de 2003, 13:21 »
¿Quieres apuntar al primer elemento de la matriz?
31
« en: Viernes 2 de Mayo de 2003, 04:05 »
Pues tiene muchas ventajas. Que yo haya aprovechado: - Aumenta rendimiento.
- Elimina código de depuración.
- Permite código multiplataforma.
Por ejemplo, si quieres que tu programa borre la pantalla en varios sistemas operativos: #ifdef _unix system("clear"); #endif #ifdef WIN32 system("cls"); #endif
32
« en: Martes 29 de Abril de 2003, 17:29 »
Originalmente publicado por abufajad y errores me acechan, undefined reference to X donde X es el nombre de las funciones, wgetch, stdscr, etc. Olvidaste indicarle al enlazador que vas a usar la biblioteca ncurses: -lcursesComo te ha dicho juank, no puedes usar las funciones de entrada y salida de C o C++, sino las implementadas en ncurses. Por ejemplo: printw por printf, scanw en vez de scanf, etc.
34
« en: Domingo 27 de Abril de 2003, 00:44 »
Sí. Seguramente quiere hacer una copia de un fichero en otro, por lo tanto debe hacerlo en modo binario. Creo que, cuando tengáis algún problema, es mejor copiar todo el programa. Así no tendremos que imaginar que es lo que queréis hacer y que puede estar mal. Si son muchas líneas de código, recordad que en éste foro se pueden adjuntar archivos. Lo que publicó diminuta estaba bien JuanK dijo: puedes progtramar en modo mixto, es decir un programa con c y c++ al tiempo... no estoy muy de acuerdo con esto, Yo tampoco estoy de acuerdo, es más, me parece un error muy grave. C y C++ son lenguajes diferentes.
35
« en: Sábado 26 de Abril de 2003, 21:06 »
Originalmente publicado por diminuta Hola, esoty h aciendo un programa en c++ al cual se le pasan dos nombres de fichero por linea de comandos, pero creo que lo que hago no está bien. Pues está bien. ¿Por qué crees que lo haces mal? Por cierto, no estás haciendo un programa en C++, sino en C.
36
« en: Miércoles 23 de Abril de 2003, 03:04 »
Es mejor utilizar la etiqueta CODE del código BB para publicar códigos fuente. #include <stdio.h> /* * La función main siempre tiene que devolver un * entero, y si no se le pasan parámetros, hay que * indicarlo. */ int main(void) { /* * En vez de variables tipo float, trabaja con int. * ¡Nadie vive tanto!:) */ int contador, edad, suma, minimo; suma = 0; edad = 0; contador = 0; minimo = 60000 /* No recuerdo el valor máximo del tipo int. */ while (contador < 35) { printf("Introduce la edad de un alumno "); scanf("%d",&edad); getchar(); /* Por el famoso problema del flujo de entrada en C */ if (edad < minimo) { minimo = edad; } suma += edad; contador++; } printf("La media aritmetica de las edades es %dn", suma / contador); printf("el minimo es %d", minimo); return 0; /* Valor que devuelve main al sistema. */ }
37
« en: Miércoles 23 de Abril de 2003, 02:49 »
Puedes inicializar mínimo con un número muy grande:
minimo = 1000000;
También puedes pedir el primer número fuera del bucle, inicializar mínimo con ese valor, y después continuar con el resto de números.
Por cierto, aquí todos somos alumnos de Juank:P
38
« en: Miércoles 23 de Abril de 2003, 01:21 »
La tabla de verdad del operador lógico && (Y) es: +-------+-------+------------+ | p | q | p && q | +-------+-------+------------+ | 0 | 0 | 0 | +-------+-------+------------+ | 0 | 1 | 0 | +-------+-------+------------+ | 1 | 1 | 1 | +-------+-------+------------+ | 1 | 0 | 0 | +-------+-------+------------+
Si metes un valor mayor que 7.0, siempre será mayor que 1.0, por lo tanto el resultado será falso: sales del bucle. Prueba con el operador || (O)
39
« en: Miércoles 23 de Abril de 2003, 01:01 »
Y si no importa lo que ocurra con los números que introduces, es decir, si sólo te interesa el número menor: Con un bucle vas pidiendo los números. El primero que introduces siempre va a ser el menor y, a continuación, comparas los siguientes con el valor menor que hayas encontrado hasta el momento. No sé si me explico  En pseudocódigo propio:) leer numero; menor = numero; hacer mientras (contador < 200) { lee numero; si (numero < menor) entonces { menor = numero; } contador = contador + 1; }
40
« en: Martes 22 de Abril de 2003, 18:07 »
Después de introducir el segundo número, lo comparas con el primero, utilizando las sentencias de control if y else. #include <stdio.h> int main(void) { int num1, num2; printf("Introduce el primer número: "); scanf("%d", &num1); getchar(); printf("Introduce el segundo número: "); scanf("%d", &num2); getchar(); if (num2 > num1) printf("El segundo número es mayor que el primero."); else printf("El segundo número es menor que el primero."); return 0; }
41
« en: Martes 22 de Abril de 2003, 17:57 »
En la página web de Borland estaba disponible la versión 5.5. Sólo tenías que registrarte, supongo que todavía estará disponible. Eso sí, sin IDE
42
« en: Lunes 21 de Abril de 2003, 01:54 »
43
« en: Lunes 21 de Abril de 2003, 01:34 »
Un ejemplo de menú podría ser éste. Es muy sencillo. La parte de código que quieres repetir la introduces en un bucle y controlas la salida con dos posibles valores de una variable. #include <stdio.h> int main(void) { int opcion, salir; do { salir = 1; printf("n1.- Opción 1."); printf("n2.- Opción 2."); printf("n0.- Terminar."); printf("ntElige una opción: "); scanf("%d", &opcion); getchar(); switch (opcion) { case 1: printf("nHas elegido la opción 1."); salir = 0; break; case 2: printf("nHas elegido la opción 2."); salir = 0; break; case 0: printf("nFinalizando el programa."); break; default: printf("nOpción incorrecta."); salir = 0; } } while (salir == 0); return 0; }
44
« en: Domingo 20 de Abril de 2003, 02:14 »
#include <stdio.h> int main(void) { printf( "Hola mundon" ); getchar(); /* Espera a que pulses la tecla ENTER */ /* * También puedes usar: * system("pause"); */ return 0; }
45
« en: Sábado 19 de Abril de 2003, 18:37 »
Cometes un error en la comparación de los vectores de tipo char. Por ejemplo en la función consulta: while (!feof(p) && !enc) { if (factu != fac.N_Fac) ...
En C no existe un tipo string o cadena, sólo son vectores y no puedes compararlos directamente. Debes crear tu propia función de comparación o usar alguna de las incluidas en la biblioteca string.h , como strcmp.
46
« en: Sábado 19 de Abril de 2003, 03:13 »
Con la función atoi, a ver si te sirve: #include <stdio.h> #include <stdlib.h> int main(void) { char cad_numeros[20]; /* Aquí almaceno la cadena de caracteres. */ int numeros[20]; /* Aquí almaceno cada dígito una vez convertido. */ int ind, tam; printf("Introduce el número: "); fgets(cad_numeros, 20, stdin); /* * El prototipo de la función atoi es: * * int atoi(const char *nptr); * * y convertirá desde la posición indicada por el puntero nptr hasta * el primer carácter no válido. */ tam = strlen(cad_numeros) - 1; for (ind = tam; ind >= 0; ind--) { /* * Aquí convierto el último carácter. Fijate que paso * a la función la dirección de memoria de cada ele- * mento del vector. */ numeros[ind] = atoi(&(cad_numeros[ind])); cad_numeros[ind] = ' '; } return 0; }
47
« en: Viernes 18 de Abril de 2003, 03:37 »
¿Qué compilas: código C o C++? ¿Usas gcc o g++ según el lenguaje? ¿Las extensiones de los archivos son las que espera el compilador -.C, .cc, .cpp, .c++, .cp para C++-?
48
« en: Lunes 14 de Abril de 2003, 01:12 »
Espero que me de tiempo a escribir ésto antes que Juank:P Fijate en dos cosas: El primer número introducido -antes de entrar en el bucle while- no lo incluyes en el sumatorio sumadepositivos. Al calcular la media tendrás que convertir los valores int a float, de esta manera: mediapositivos = (float) sumapositivos / (float) contadorpositivos; medianegativos = (float) sumanegativos / (float) contadornegativos;
Y tienes que calcularla antes de mostrarla por pantalla -despiste:)- Y cuidado, void main() no se considera una forma correcta. Debe ser int main(void).
49
« en: Sábado 29 de Marzo de 2003, 21:08 »
Te voy a poner un ejemplo sencillo, a ver si te convence. #include <stdio.h> int main(void) { int num1, num2, suma; num1 = 5; num2 = 3; suma = num1 + num2; printf("%d + %d = %d", num1, num2, suma); return 0; }
¿Qué pasa si quieres suma otros dos números? #include <stdio.h> int main(void) { int num1, num2, suma; num1 = 5; num2 = 3; suma = num1 + num2; printf("%d + %d = %dn", num1, num2, suma); num1 = 10; num2 = 11; suma = num1 + num2; printf("%d + %d = %dn", num1, num2, suma); return 0; }
Si quisieras sumar más números tendrías que volver a repetir el código. #include <stdio.h> void suma(int f_num1, int f_num2); int main(void) { suma(3, 5); suma(10, 11); suma(2, 3); return 0; } void suma(int f_num1, int f_num2) { int suma; suma = f_num1 + f_num2; printf("%d + %d = %dn", f_num1, f_num2, suma); }
¿Ves la diferencia? La directiva del preprocesador #define se usa para definir constantes o cualquier sustitución de macro. Por ejemplo: Cada vez que en el código aparezca la cadena NUM1, será sustituida por 5. #define INICIO { #define FIN }
Cambias los delimitadores { y } por INICIO y FIN. También se puede pasar argumentos a los macros, pero creo que si no tienes claro el concepto de función no es el momento de meternos en ésto.  Y en los archivos .h -archivos de cabecera- no se debe incluir código. Se usan para definiciones - #define- y para prototipos de funciones.
50
« en: Viernes 28 de Marzo de 2003, 16:05 »
El mismo bucle de dos maneras: while (lista != NULL) { if (lista->campo == patron) break; else lista = lista->siguiente; } while ((lista != NULL) && (lista->campo != patron)) lista = lista->siguiente;
¿Cuál es mejor? ¿Cuál es más clara? ¿Es mejor poner todas las condiciones de salida en una misma instrucción? Quizás el ejemplo que he puesto yo es muy sencillo pero he visto más de cinco condiciones en una misma instrucción; me volvía loco con tanto paréntesis:P
|
|
|