|
101
|
Programación / Programación C/C++ / fgetc()
|
en: 25 Diciembre 2013, 08:54 am
|
Saludos
Yo sé que la función fgetc funciona con un argumento que es un stream de tipo FILE, pero tengo la duda de si fgetc puede aceptar argumentos de otros tipos como char*??
gracias
|
|
|
102
|
Programación / Programación C/C++ / uso de strcat
|
en: 21 Diciembre 2013, 03:13 am
|
Saludos, tengo una duda sobre el uso de la función strcat. si yo tengo una cadena inicializada en NULL, *cadena = NULL, y con un ciclo while quiero ir agregadole caracter por caracter podria hacer esto con el strcat que me vaya concatenando al final de la cadena caracter por caracter?? algo como asi: #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { int i = 0; char *cadena = NULL,c[5],car; while(i < 5) { i++; } return 0; }
es que el codigo no funciona y creo que es por el strcat gracias
|
|
|
103
|
Programación / Programación General / Singleton variables prolog
|
en: 15 Diciembre 2013, 19:34 pm
|
Saludos, estoy haciendo mi primer programa en Prolog, es un simple árbol genealógico pero me aparece un warning que dice singleton variables[C,D] y no se que significa esto
los hechos del programa son del tipo padre(-,-) y madre(-,-). hermanos(A,B):-padre(C,A),padre(C,B);madre(D,A),madre(D,B). abuelo(E,A):-padre(E,padre(C,A)),padre(E,madre(D,A)).
?-abuelo(daniel,maria).
de antemano gracias
|
|
|
104
|
Programación / Programación C/C++ / Diseño de Ensamblador
|
en: 9 Diciembre 2013, 16:56 pm
|
Saludos
tengo que crear un programa que identifique las partes de una línea en lenguaje ensamblador, y para esto me dicen que necesito tener un archivo de texto creado previamente y
Leer línea a línea el archivo, pudiendo: a. Leer cada línea directamente del archivo, de una por una y procesar cada línea que se va leyendo. b. Leer todo el archivo con un ciclo y conforme se lee el archivo almacenarlo en una estructura de datos temporal, posteriormente leer de esta estructura de datos
Me dice que en ambos casos hay ventajas y desventajas. Deberás elegir la que sea más conveniente, recuerda que el programa debe de irse completando con las siguientes practicas.
¿cuales son estas ventajas y desventajas?,¿Cuál de estas opciones es la mejor y la más fácil de implementar?, No quiero que me hagan la tarea solo que me den una ligera idea de como seria
gracias
|
|
|
105
|
Informática / Hardware / Arquitectura de Von Newmann vs. Arquitectura Harvard
|
en: 6 Diciembre 2013, 01:46 am
|
Saludos
Tengo una duda, si en la Arquitectura de Harvard la CPU esta conectada a dos memorias independientes(una para datos, otra para instrucciones), la CPU puede acceder a ambas memorias simultaneamente, por tener dos buses diferentes y a mayor velocidad, entonces por que la Arquitectura de Von Neumman es más utilizada, si parece que la otra tiene mas ventajas??
gracias
|
|
|
106
|
Programación / Programación C/C++ / basura en mi programa
|
en: 6 Diciembre 2013, 00:47 am
|
Saludos estoy haciendo un programa que contiene un menu para elegir diferentes operaciones aritmeticas, ya se que no se puede usar fflush(stdin) para limpiar el buffer, pero ya le puse el fgets + sscanf en las partes donde crei que me daba problemas pero aun asi sigue con basura, tengo que cambiar cada uno de los scanf() que tengo en mi codigo por un fgets + sscanf???? lo que pasa es que son muchisimos y crei que con solo ponerle 2 seria mas que suficiente #include <stdio.h> #include <stdlib.h> #define TAM 5 #define ARITMETICA_SIMPLE 1 #define ARITMETICA_BINARIA 2 #define FACTORIAL 3 #define TABLA_MULTIPLICAR 4 #define SALIR 5 int main() { //Variables de uso interno del programa int continuar = 1,i,factorial = 1; //Variables para entrada de datos int opcion,numero1,numero2,numero_factorial,multiplicando,multiplicador; char operador,buffer[TAM]; do { //Menu principal printf("CALCULADORA v1.0\n\n"); printf("Elige una de las siguientes opciones:\n"); printf("1. Aritmetica simple con suma de enteros a+b\n"); printf("2. Aritmetica extendida binaria\n"); printf("3. Factorial de n (n!)\n"); printf("4. Detallar una tabla de multiplicar\n"); fgets(buffer ,sizeof(buffer ),stdin ); switch(opcion) { //Aritmetica simple con suma de enteros a+b case ARITMETICA_SIMPLE: printf("Dame el valor de a = "); printf("Dame el valor de b = "); printf("%d + %d = %d",numero1 ,numero2 ,numero1 +numero2 ); break; //Aritmetica extendida binaria (+,-,*,/,%modulo) case ARITMETICA_BINARIA: printf("Escribe el operador (+,-,*,/,%%): "); fgets(buffer ,sizeof(buffer ),stdin ); sscanf(buffer ,"%c",&operador ); printf("\nDame el valor de a = "); printf("Dame el valor de b = "); switch(operador) { case '+': printf("%d %c %d = %d\n",numero1 ,operador ,numero2 ,numero1 +numero2 ); break; case '-': printf("%d %c %d = %d\n",numero1 ,operador ,numero2 ,numero1 -numero2 ); break; case '*': printf("%d %c %d = %d\n",numero1 ,operador ,numero2 ,numero1 *numero2 ); break; case '/': printf("%d %c %d = %d\n",numero1 ,operador ,numero2 ,numero1 /numero2 ); break; case '%': printf("%d %c %d = %d\n",numero1 ,operador ,numero2 ,numero1 %numero2 ); break; default: printf("No hay un resultado calculable\n"); printf("%d %c %d = 0\n",numero1 ,operador ,numero2 ); } break; //Factorial de n (n!) case FACTORIAL: printf("Dame el valor de n = "); scanf("%d",&numero_factorial ); if(numero_factorial < 0) printf("El factorial de %d no esta definido\n",numero_factorial ); else if(numero_factorial == 0) printf("El factorial de 0 es 1\n"); else { for(i = numero_factorial;i > 0;i--) factorial*=i; printf("El factorial de %d es %d\n",numero_factorial ,factorial ); } break; //Detallar una tabla de multiplicar case TABLA_MULTIPLICAR: printf("Dame el multiplicando i = "); scanf("%d",&multiplicando ); printf("Dame hasta cual multiplicador n= "); scanf("%d",&multiplicador ); printf("Tabla de multiplicar del %d\n",multiplicador ); i = 1; while(i <= multiplicador) { printf("%d\tX\t%d\t=\t%d\n",multiplicando ,i ,multiplicando *i ); i++; } break; //Salida del programa case SALIR: continuar = 0; break; default: printf("Opcion no valida!\n"); } if(continuar) }while(continuar); return 0; }
de antemano gracias
|
|
|
107
|
Programación / Programación C/C++ / problema al abrir archivo
|
en: 4 Diciembre 2013, 22:13 pm
|
Saludos, tengo un archivo.txt guardado en x ruta, y quiero abrirlo en modo de solo lectura, pero tengo la duda si debo ingresarle en la funcion fopen la ruta completa donde se encuentra el archivo, o si puedo hacerlo de esta manera, el archivo se encuentra en el escritorio pero si lo hago de esta manera me imprime que no se pudo abrir archivo #include <stdio.h> #include <stdlib.h> int main() { FILE *fd; if((fd = fopen("P1ASM.txt","r"))!= NULL ) { printf("Si se pudo abrir archivo"); } else printf("No se pudo abrir el archivo"); return 0; }
de antemano gracias
|
|
|
108
|
Programación / Programación C/C++ / varias listas ligadas
|
en: 4 Diciembre 2013, 00:20 am
|
Saludos
Si tengo un codigo en el que tengo que crear diferentes listas simplemente ligadas, tendria que hacerlo como un arreglo de punteros?? para que cada uno de esos punteros apunte al primer nodo de la lista??
|
|
|
109
|
Foros Generales / Dudas Generales / Duda de matematicas
|
en: 1 Diciembre 2013, 03:32 am
|
Saludos
Tengo una duda respecto a unos ejercicios de matematicas, se que este es un foro de informatica y no de mate, pero espero que me pudieran ayudar con esto:
el ejercicio dice: encuentra el orden de las siguientes expresiones:
a ) 3n! + 100 n^100 b) 3^(n+1) + 10^ n/2
tengo entendido que el orden de la suma de unas expresiones algebraicas es el el orden del mayor elemento o algo asi, como por ejemplo si tengo:
3n^2 + 5n + 2, el orden va a ser el mayor o sea n^2, pero de las expresiones anteriores no se como calcularlos porque tienen factoriales y n/2
gracias
|
|
|
110
|
Programación / Programación C/C++ / Caballos
|
en: 27 Noviembre 2013, 21:02 pm
|
Saludos, tengo un programa que dado un tamaño n de un tablero, me diga cual es el numero maximo de caballos que se pueden colocar en ese tablero sin atacarse? y de cuantas formas, el programa me tiene que dar maximo 10 soluciones solamente. e hice un codigo que me pida una (x,y) aleatoria para poner en esa casilla al caballo y despues calcular los 8 movimientos posibles y asegurarme que no haya otra pieza en ninguna de esas 8 casillas que marque, para que no se ataquen,en caso de que si haya otro caballo que pueda atacar pedir otra (x,y) aleatoria, y asi sucesivamente hasta que tengo el total de caballos en el tablero, como son 10 tableros maximo, a cada uno le saco el numero total de caballos y esos totales los almaceno en un arreglo para despues buscar con una funcion el mayor de ellos. y ese seria mi maximo. Pero el problema es que ese no es el maximo, porque solo son 10 tableros, pero por ejemplo si fueran 20 tableros a los que les calculo su total de caballos puede ser que en alguno de esos haya un numero de caballos mayor que al mayor que calcule de los 10 tableros que tenia #include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> #define NO_CASILLAS_DISPONIBLES 0 #define MAX_SOLUCIONES 10 void inicializarTablero(char **tablero,int n); int insertarCaballos(char **tablero,int fila,int columna,int casillasDisponibles,int numCaballos,int n); int verificarMovimientos(char **tablero,int fila,int columna,int casillasDisponibles,int n); void imprimirTablero(char **tablero,int n); int maximoCaballos(int totalCaballos[]); int main() { FILE *fd; int n,i,j = 0,fila,columna,numCaballos,totalCaballos[MAX_SOLUCIONES],casillasDisponibles,MaxCaballos; char **tablero; do { printf("Dame tamanio de tablero: "); }while(n < 2 || n > 20);/* if((fd = fopen("caballos_xx.txt","w"))!=NULL) {*/ tablero = malloc(n *sizeof(char*)); for(i = 0;i < n;i++) while(j < MAX_SOLUCIONES) { numCaballos = 0; casillasDisponibles = n*n; printf("(%d,%d)\n",fila ,columna ); inicializarTablero(tablero,n); totalCaballos[j] = insertarCaballos(tablero,fila,columna,casillasDisponibles,numCaballos,n); imprimirTablero(tablero,n); printf("\n\nEl numero maximo de caballos en esta solucion es de %d\n",totalCaballos [j ]); j++; } MaxCaballos = maximoCaballos(totalCaballos); printf("\nEl numero maximo de caballos en un tablero de %d x %d sin atacarse es %d\n",n ,n ,MaxCaballos );/* } else printf("No se pudo crear archivo");*/ return 0; } void inicializarTablero(char **tablero,int n) { int i,j; for(i = 0;i < n;i++) { for(j = 0;j < n;j++) tablero[i][j] = '0'; } } int insertarCaballos(char **tablero,int fila,int columna,int casillasDisponibles,int numCaballos,int n) { if(casillasDisponibles > NO_CASILLAS_DISPONIBLES) { if(tablero[fila][columna] == '0') { tablero[fila][columna] = 'C'; casillasDisponibles = verificarMovimientos(tablero,fila,columna,casillasDisponibles,n); numCaballos++; insertarCaballos(tablero,fila,columna,casillasDisponibles,numCaballos,n); } else { insertarCaballos(tablero,fila,columna,casillasDisponibles,numCaballos,n); } } else return numCaballos; } int verificarMovimientos(char **tablero,int fila,int columna,int casillasDisponibles,int n) { int i,j,nuevaFila,nuevaColumna,eliminadas; eliminadas = casillasDisponibles-1; nuevaFila = fila + 2; nuevaColumna = columna -1; if((nuevaFila>=0&&nuevaFila<n)&&(nuevaColumna>=0&&nuevaColumna<n)&&(tablero[nuevaFila][nuevaColumna]=='0')) { tablero[nuevaFila][nuevaColumna] = 'x'; eliminadas--; } nuevaFila = fila + 2; nuevaColumna = columna + 1; if((nuevaFila>=0&&nuevaFila<n)&&(nuevaColumna>=0&&nuevaColumna<n)&&(tablero[nuevaFila][nuevaColumna]=='0')) { tablero[nuevaFila][nuevaColumna] = 'x'; eliminadas--; } nuevaFila = fila + 1; nuevaColumna = columna - 2; if((nuevaFila>=0&&nuevaFila<n)&&(nuevaColumna>=0&&nuevaColumna<n)&&(tablero[nuevaFila][nuevaColumna]=='0')) { tablero[nuevaFila][nuevaColumna] = 'x'; eliminadas--; } nuevaFila = fila + 1; nuevaColumna = columna + 2; if((nuevaFila>=0&&nuevaFila<n)&&(nuevaColumna>=0&&nuevaColumna<n)&&(tablero[nuevaFila][nuevaColumna]=='0')) { tablero[nuevaFila][nuevaColumna] = 'x'; eliminadas--; } nuevaFila = fila - 2; nuevaColumna = columna - 1; if((nuevaFila>=0&&nuevaFila<n)&&(nuevaColumna>=0&&nuevaColumna<n)&&(tablero[nuevaFila][nuevaColumna]=='0')) { tablero[nuevaFila][nuevaColumna] = 'x'; eliminadas--; } nuevaFila = fila - 2; nuevaColumna = columna + 1; if((nuevaFila>=0&&nuevaFila<n)&&(nuevaColumna>=0&&nuevaColumna<n)&&(tablero[nuevaFila][nuevaColumna]=='0')) { tablero[nuevaFila][nuevaColumna] = 'x'; eliminadas--; } nuevaFila = fila - 1; nuevaColumna = columna - 2; if((nuevaFila>=0&&nuevaFila<n)&&(nuevaColumna>=0&&nuevaColumna<n)&&(tablero[nuevaFila][nuevaColumna]=='0')) { tablero[nuevaFila][nuevaColumna] = 'x'; eliminadas--; } nuevaFila = fila - 1; nuevaColumna = columna + 2; if((nuevaFila>=0&&nuevaFila<n)&&(nuevaColumna>=0&&nuevaColumna<n)&&(tablero[nuevaFila][nuevaColumna]=='0')) { tablero[nuevaFila][nuevaColumna] = 'x'; eliminadas--; } return eliminadas; } void imprimirTablero(char **tablero,int n) { int i,j; for(i = 0;i < n;i++) { for(j = 0;j < n;j++) } } int maximoCaballos(int totalCaballos[]) { int Maximo,i; Maximo = totalCaballos[0]; for(i = 1;i < MAX_SOLUCIONES;i++) { if(totalCaballos[i] > Maximo) Maximo = totalCaballos[i]; } return Maximo; }
este es el codigo, pero no entiendo como puedo hacer que me saque el maximo posible sin necesidad de cambiar todo el codigo, me costo un poco de trabajo hacerlo y entender como iba a ser el algoritmo y todo, por eso no quiero empezar desde 0, si pudieran ayudarme se los agradeceria muchisimo de antemano gracias
|
|
|
|
|
|
|