|
71
|
Programación / Programación C/C++ / Re: Error al ejecutar un programa en C que he compilado [Windows 8]
|
en: 5 Abril 2013, 21:15 pm
|
igualmente fijate, poné tu código en este compilador online de C/C++ y fijate que hay varios problemas http://www.compileonline.com/compile_cpp_online.phpCompiling the source code.... $g++ /tmp/136516399727456.cpp -o /tmp/136516399727456 -lm 2>&1 /tmp/136516399727456.cpp: In function 'int main()': /tmp/136516399727456.cpp:29: error: incompatible types in assignment of 'double' to 'double [1000000]' /tmp/136516399727456.cpp: In function 'void Histogram(double*, double*, int, int, double*, double*, double*)': /tmp/136516399727456.cpp:73: error: invalid operands of types 'double*' and 'double' to binary 'operator<' /tmp/136516399727456.cpp:73: error: cannot convert 'double*' to 'double' in assignment /tmp/136516399727456.cpp:74: error: invalid operands of types 'double*' and 'double' to binary 'operator>' /tmp/136516399727456.cpp:74: error: cannot convert 'double*' to 'double' in assignment /tmp/136516399727456.cpp:86: error: invalid operands of types 'double*' and 'double' to binary 'operator-' /tmp/136516399727456.cpp:100: error: invalid operands of types 'double*' and 'double' to binary 'operator*' /tmp/136516399727456.cpp:100: error: in evaluation of 'operator*=(double*, double)'
fijate si los podés arreglar para que al menos se compile en el compilador online así te podemos ayudar mejor .
|
|
|
73
|
Programación / Programación C/C++ / Re: Wrapper de Opengl32.dll de Crusader (2002)
|
en: 5 Abril 2013, 21:00 pm
|
No. esto se llama 'wrapper' de una DLL. O en castellano, se dice DLL de reemplazo o versión propia de una DLL existente.
En este caso, opengl32.dll es una DLL existente que el juego necesita cargar por las dependencias con opengl32 que el juego tiene (ya que se trata de un juego hecho en opengl32, pero dispone de un modo alternativo de video que es Direct 3D). Entonces al ubicar tu propia versión de opengl32.dll en la carpeta del juego, se va a cargar en lugar de la original que se encuentra en la carpeta system32 (WinXP), en realidad se cargan las 2, pero el juego referencia a la DLL de mentira XD.
|
|
|
75
|
Programación / Programación C/C++ / Re: Duda al hacer un programa.
|
en: 5 Abril 2013, 14:42 pm
|
printf("El resultado de la suma es: %d\n", vect3); lo que pasa con esto: es que el nombre 'vect3' significa una dirección en la memoria donde empieza el vector. para acceder a los 3 elementos de tu vector, lo hacés así: vect3[0] vect3[1] vect3[2]
printf("%d %d %d\n", vect3[0],vect3[1],vect3[2]); de esa forma se accede a los valores en cada posición del vector.
|
|
|
77
|
Programación / Programación C/C++ / Re: Problemas con código de parquímetro.
|
en: 5 Abril 2013, 01:35 am
|
... sin bugs! con que sin bugs eh? arre XD cuando tenés así.. if (tipoVehiculo == 1) // Si es un coche... { ... } if (tipoVehiculo == 2) // Si es una moto... { ... } if (tipoVehiculo == 3) { ... }
se utiliza IF + ELSE IF de esta forma: if (tipoVehiculo == 1) // Si es un coche... { ... } else f (tipoVehiculo == 2) // Si es una moto... { ... } else if (tipoVehiculo == 3) { ... } eso para que no tengas que comprobar todos los casos innecesariamente. mejor aún, es usar un selector de casos 'SWITCH', el cual actúa como una tabla indexada, con la cual se puede acceder a la posición correcta dentro de la tabla, de esta forma: switch(tipoVehiculo) { case 1: {...}break; case 2: {...}break; case 3: {...}break; }
PS: era pseudocódigo no es para compilar
|
|
|
78
|
Programación / Programación C/C++ / Re: Problema al compilar.
|
en: 5 Abril 2013, 01:23 am
|
No entiendo de que se trata tu programa pero así como te lo paso anda.´ comidas.txt 111 222 333 444 555
#include<stdio.h> #include<stdlib.h> void ciclo(FILE *fichero, int minimo,int alimentos, int *variable){ int dias=0, hambre, i, comida, calorias, contador; contador=0; *variable=0; hambre=0; i=0; while(!feof(fichero)) { calorias=0; for(i=0;i<alimentos;i++){ fscanf(fichero,"%i", &comida); printf("%d %d %d\n",comida,alimentos,i); system("pause"); calorias=calorias+comida; } if(calorias<minimo){ hambre=hambre+1; } else { contador=hambre; hambre=0; } if(hambre>contador){ *variable=hambre; } } } int main(int variable){ FILE *fichero; fichero=fopen("comidas.txt", "r+"); if(!fichero){ puts("No existe el fichero!\n"); system("pause"); //return 0; fichero=fopen("comidas.txt", "w"); if(!fichero){ puts("No se ha creado el fichero!\n"); system("pause"); return 0; } fclose(fichero); fichero=fopen("comidas.txt", "r+"); } int minimo, alimentos; printf("Introduce la cantidad de alimentos:\n"); scanf("%i", &alimentos); alimentos = 5; printf("Introduce el minimo de calorias:\n"); scanf("%i", &minimo); ciclo(fichero,minimo,alimentos,&variable); printf("Hambruna mas larga: %i\n", variable); fclose(fichero); system("pause"); return 0; }
|
|
|
79
|
Programación / Programación C/C++ / Re: Ayuda con código para re ordenar array
|
en: 5 Abril 2013, 00:50 am
|
Ak está el code, avisenme cualquier koza si algún detaye se habrá escapado XD Eso que remarcastes significa lo siguiente, son todos los casos en los cuales se continúa copiando char por char hasta completar un bloque. un bloque se forma o sólo por letras o sólo por números. Entonces esa comprobación comprueba el estado de un par de flags o agrupación de flags, que informan el paso de un bloque a otro, o mejor dicho el final de un bloque. Si se encuentra ante el final de un bloque, entonces se incrementa la posición en el array dinámico, y se resetea el contador usado para copiar cadenas. #include<stdlib.h> #include<stdio.h> #include<string.h> //http://www.cplusplus.com/reference/cstdlib/realloc/ int main(){ char cadena[512]; char** array_de_cadenas = 0; char** array_de_cadenas_r = (char**)malloc(sizeof(char)*1); array_de_cadenas_r[0] = (char*)malloc(sizeof(char)*128); memset(array_de_cadenas_r[0],0,sizeof(char)*128); // char array_de_cadenas[20][128] = {{0}}; printf("ingrese la cadena..\n"); scanf("%s", cadena); int modo=0; int pos=-1; int let=0;// contador usado como flag int num=0;// contador usado como flag int i=0; int j=0; while(cadena[i]){ //if(pos == 20) break; if(j==(128-2)) { printf("uno de los bloques sobrepasa char=128-2\n"); system("pause"); return 0; } if(cadena[i] >= 'a' && cadena[i]<='z'){ let++; num=0; } else if(cadena[i] >= 'A' && cadena[i]<='Z'){ let++; num=0; } else if(cadena[i] >= '0' && cadena[i]<='9'){ num++; let=0; } else { let=0; num=0; } if((modo==1&&let)||(modo==2&&num)); else { pos++; j=0; array_de_cadenas_r = (char**)realloc(array_de_cadenas_r, sizeof(char)*(pos+1)); array_de_cadenas_r[pos] = (char*)malloc(sizeof(char)*128); memset(array_de_cadenas_r[pos],0,sizeof(char)*128); } if(let){ array_de_cadenas_r[pos][j] = cadena[i]; j++; modo=1; } else if(num){ array_de_cadenas_r[pos][j] = cadena[i]; j++; modo=2; } else { modo=0; } i++; } array_de_cadenas = array_de_cadenas_r; for(int b=0; b<pos+1; b++){ printf(array_de_cadenas[b]); putchar('\n'); } for(int c=0; c<pos; c++) free(array_de_cadenas[c]); free(array_de_cadenas); system("pause"); return 0; }
|
|
|
80
|
Programación / Programación C/C++ / Re: ¿Qué hago mal en el uso de for?
|
en: 4 Abril 2013, 18:52 pm
|
El FOR es así for( PARTE1 ; PARTE2 ; PARTE3) Como ves, las 3 partes son opcionales, pero te quedaría un FOR infinito, como en este caso: Si vas a usar algunas de sus 3 partes, tenés que comprender que la primera es para asignaciones, la segunda es para condiciones y la tercera para incrementaciones. Esto es lo que escribiste.. usaste la primera y la segunda. for(multiplos3 < numero2; multiplos3 + sumaTres;) Pero fijate si las 3 partes tienen sentido con esa línea
|
|
|
|
|
|
|