Menú

Mostrar Mensajes

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

Mostrar Mensajes Menú

Mensajes - Kenji-chan

#41
bueno por donde comienzo veamos
Citar
"Ingrese tres números enteros; determine e informe el mayor de ellos."
según esa definición es para calcular el numero mayo de tres
y por lo que veo tu tratas de calcular si un numero es paro o no... (o eso creo)
y encuanto los errores es por un mal manejo de c++ te recomiendo que busque un buen curso de c++ en youtube o bien el curso de pauek la pagina de minidocis http://www.minidosis.org/#/
#42
el objeto ifstream viene con 4 constructores
Código (cpp) [Seleccionar]

ifstream(); //pordefecto
ifstream (const char* filename, ios_base::openmode mode = ios_base::in); //inicializacion
ifstream (const string& filename, ios_base::openmode mode = ios_base::in); //inicializacion
ifstream (const ifstream&) = delete; //copia
ifstream (ifstream&& x); //movimiento


el que tratas de utilizar es el
ifstream (const char* filename, ios_base::openmode mode = ios_base::in);
que como habrás notado el argumento mode es ios_base::in que esta puesto pordefecto al no especificarlo, con esto lo que hacemos es intentar abrir el fichero const char* filename que es el primer argumento, pero ese argumento no te crea el fichero especificado en el primer argumento solo lo intenta abrir sin mas, si lo que quieres es que también te cree el fichero has esto

Código (cpp) [Seleccionar]

#include <iostream>
#include <fstream>
using namespace std;

int main(int argc, char *argv[]) {
ifstream f;
string fn;
cout << "Introduzca el nombre del archivo de entrada: ";
cin >> fn;
f.open(fn, std::ofstream::out | std::ofstream::app);
        /* codigo para excribir dentro del fichero */
f.close();
return 0;
}
#43
primero el código se pone entre etiquetas  GeSHi
segundo en la condición del while no pones la función  strtok

Código (cpp) [Seleccionar]

#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;

int main(int argc, char *argv[]) {
string txt = "\"pepe\" como frutas";
const char delim[2] = "\"";
char* token;

token = strtok((char*)txt.c_str(), delim);

while(token != NULL){
fprintf(stdout, "%s\n", token);
token = strtok(NULL, delim);
}

return 0;
}


este código me da como salida
pepe
como frutas

ya que la funcion strtok devuelve un puntero al primer token encontrado en la cadena y devuelve un puntero nulo si no quedan tokens para recuperar
#44
pon tu codigo.
pero creo que uno de los errores es que estas poniendo mal el limitador en c/c++ no puedes hacer esto """ para introducir una comillas dentro de comillas haces esto "\""
#45
te dejo esta lista de reproducción para que le eches un ojo
https://www.youtube.com/playlist?list=PLTd5ehIj0goMTSK7RRAPBF4wP-Nj5DRvT
#46
Linea 109 sscanf(Linea, "%d", persona->telefono);

te falto mandar por referencia la bariable

sscanf(Linea, "%d", &persona->telefono);

#47
Programación C/C++ / Re: Fscanf en lenguaje C
28 Marzo 2018, 01:39 AM
a mi me funciona bien con double


#include <stdio.h>

int main(int argc, char *argv[]) {
int estado = 0;
double id;
FILE* fp;

fp = fopen("texto.txt", "r");

while(!feof(fp)){
fscanf(fp, "%lf %d", &id, &estado);
if(estado == 1){
fprintf(stdout, "ID: %.0lf\n", id);
}
estado = 0;
}

fclose(fp);

return 0;
}
#48
Programación C/C++ / Re: Fscanf en lenguaje C
27 Marzo 2018, 22:26 PM
veras tu error es que estas usando un tipo de dato int para almacenar un numero que sobre pasa la capacidad y el tipo de dato int solo almacena 2 bytes si la arquitectura de tu maquina es de x32 o 4 bytes si es de x64,

capacidad de almacenamiento de un int
2 bytes -32768 a 32767
4 bytes -2147483648 to 2147483647

6058267724 -> lo que intentas almacenar
2147483647 -> capacidad de un int x64

como ves el int es mucho mas pequeño de lo que le intentas almacenar
#49
lo que puedes hacer es tratarlo como cadenas de texto de ese modo podes verificar las siguientes condiciones:

1)si es un numero buscamos en todas las posiciones si esa coincidencia es un numero o no
Código (cpp) [Seleccionar]

char* calificaciones = "12a";

for(int i=0; i<3; i++){
 if((int)calificaciones[i] > 47 && (int)calificaciones[i] < 58){
   /*Calificaciones es un numero*/
 }else{
   /*Calificaciones no es un numero*/
   break;
 }
}



2) si es un numero de coma flotante
Código (cpp) [Seleccionar]

char* calificaciones = "12.5";

for(int i=0; i<4; i++){
 if(calificaciones[i] == '.'){
   /*Calificaciones es un numero entero*/
 }else{
   /*Calificaciones no es un numero entero*/
   break;
 }
}


y por ultimo hacemos una función que lo convierta de texto a entero

Código (cpp) [Seleccionar]

int convertToInt(string num){
int ret, aux;

ret = (int)num[num.size()-1] - 48;
for(int i = num.size()-2, cont = 1; i>=0; i--, cont++){
aux = ((int)num[i] - 48) * eleva10(cont);
ret += aux;
}

return ret;
}
#50
para que sea mas facil lo haremos haci

Código (cpp) [Seleccionar]

while (SDL_PollEvent(&tecla) != 0) {
 if (tecla.type == SDL_QUIT) {
  exit(0);
 }
}


ya que
int SDL_PollEvent(SDL_Event* event)

es una funcion que devuelve 1 si hay un evento pendiente o 0 si no hay ninguno disponible.

y en el while cundo capturabas el evento te decía que quedaban eventos pendientes por
procesar de ese modo al no tratarlos el bucle se estancava dentro de sa parte del codigo

ademas te recomindo que agas una funcion booleana que te permita salir del gameLoop asi

Código (cpp) [Seleccionar]

bool quit = false;

while(!quit){
SDL_UpdateWindowSurface(window);
SDL_BlitSurface(fondo,NULL,windowSurface,NULL);
while (SDL_PollEvent(&tecla)) {
 if (tecla.type == SDL_QUIT) {
  quit = true;
 }
}

return 0;


de ese modo no cierras la ejecución del programa inesperada mente, de esa forma dejas que la función main finalice correcta mente sin errores ademas de permitirte destruir los
SDL_Window *window
SDL_Surface*windowSurface
SDL_Surface*fondo

como es devido y no dejarlos almacenados en la memoria ram