|
96
|
Programación / Programación C/C++ / Re: Ayuda por favor ejercicio reloj do/while C
|
en: 22 Noviembre 2016, 19:05 pm
|
en la linea 16 con el operador '%' estas comprobado si el residuo de dividir en cada iteracion el valor de dia entre 283 sea exactamente igual a 0 if(dia%283==0&&dia!=1&&hr>=24){dia++;hr=-1;} mejor evalúa el dia y despues haces otra evalucion del dia que quieres que se atrase if(dia<=24)
printf("\ndia %d %d:d%:%d",dia,hr,min,seg); esta mal escrito es %d por eso te imprime la d y en el contador de las horas te imprime los minutos
|
|
|
98
|
Programación / Programación C/C++ / Re: Ayuda por favor ejercicio reloj do/while C
|
en: 21 Noviembre 2016, 19:01 pm
|
primero estas haciendo mal el incremento de las variables seg=seg++; con poner seg++; es suficiente
segundo estas haciendo mal las comprobaciones if(seg==59){min=min++; seg=0;} solo entrara cunando seg sea exactamente igual a 59
tercero estas haciendo mal el reinicio de las variables if(seg==59){min=min++; seg=0;} if(min==59&&seg==59){hr=hr++;min=0;seg=0;} no puedes estar poniendo a cero cada ves que entras en una nueva comprobación tiene que haber una sola que se encargue de reiniciarla cuando supere su valor máximo por ejemplo if(seg>=60){min++; seg=0;} if(min>=60){hr++;min=0;}
|
|
|
99
|
Programación / Programación C/C++ / Re: suma de los elementos encima de la diagonal principal en c
|
en: 21 Noviembre 2016, 18:32 pm
|
el problema esta en que tus variables son locales lo cual las hace distintas a las otros void leermatriz() { int matriz[50][50]; int fila, columna,i,j; //estas variables solo serán tomadas en cuenta dentro de esta función
void imprimirmatriz() { int matriz[50][50]; int fila, columna,i,j; //estas variables solo serán tomadas en cuenta dentro de esta función //y serán distintas a las de la función anterior
y al solo estar declaradas se iniciaran con un valor basura, por esa razón cuando imprimes la matriz te salen otros valores
|
|
|
100
|
Programación / Programación C/C++ / Re: El juego de la vida
|
en: 20 Noviembre 2016, 22:51 pm
|
ya lo he heco funcionar gracias por la ayuda dejo el code por si alguien lo quiere probar. //El juego de la vida
#include <stdio.h> #include <windows.h> #include <time.h>
int columnas;
void gotoxy(int x,int y); void dibujarrejilla(int fil, int col); void dibujarCelula(int rejilla[][columnas], int filas, int col); void llenarRejilla(int rejilla[][columnas], int filas, int col); void comprobacion(int rejilla[][columnas], int filas, int col);
int main(){
int i, j, filas, col;
do{ printf("Coloque el numero de filas\n"); scanf("%d", &filas); if(filas<10 || filas>40) printf("intodusca un numero mayor que 9 o menor que 41\n"); }while(filas<10 || filas>40);
do{ printf("Coloque el numero de columnas\n"); scanf("%d", &col); if(col<10 || col>29) printf("intodusca un numero mayor que 9 o menor que 30\n"); }while(col<10 || col>29);
columnas = col;
int rejilla[filas][col];
llenarRejilla(rejilla, filas, col); dibujarrejilla(filas, col);
do{ dibujarCelula(rejilla, filas, col); comprobacion(rejilla, filas, col); Sleep(1000); //getch();
}while(1);
getch(); return 0; }
void gotoxy(int x,int y){ HANDLE hcon; hcon = GetStdHandle(STD_OUTPUT_HANDLE); COORD dwPos; dwPos.X = x; dwPos.Y= y; SetConsoleCursorPosition(hcon,dwPos); }
void llenarRejilla(int rejilla[][columnas], int filas, int col){ int i, j;
srand(time(NULL));
for(i=0; i<filas; i++){ for(j=0; j<col; j++){ rejilla[i][j]=rand()%2; } }
}
void dibujarrejilla(int fil, int col){ int i, j;
system("cls");
for(i=0; i<fil; i++){ for(j=0; j<col; j++){ if(i==0){ if(j==0){ gotoxy(i*2,j*2); printf("%c%c",201,205); }else{ if((col-1) == j){ gotoxy(i*2,j*2); printf("%c%c",200,205); gotoxy(i*2,(j*2-1)); printf("%c",186); }else{ gotoxy(i*2,j*2); printf("%c%c",204,205); gotoxy(i*2,(j*2-1)); printf("%c",186); } } }else{ if(j==0){ gotoxy(i*2,j*2); printf("%c%c",203,205); }else{ if((col-1) == j){ gotoxy(i*2,j*2); printf("%c%c",202,205); gotoxy(i*2,(j*2-1)); printf("%c",186); }else{ gotoxy(i*2,j*2); printf("%c%c",206,205); gotoxy(i*2,(j*2-1)); printf("%c",186); } } if((fil-1) == i){ if(j==0){ gotoxy(i*2,j*2); printf("%c ",187); }else if((col-1) == j){ gotoxy(i*2,j*2); printf("%c ",188); }else{ gotoxy(i*2,j*2); printf("%c ",185); } } } } }
}
void dibujarCelula(int pos[][columnas], int filas, int col){ int j, i;
for(i=0; i<filas-1; i++){ for(j=0; j<col-1; j++){ if(pos[i][j] == 1){ gotoxy((i*2)+1,(j*2)+1); printf("%c", 219); }else{ gotoxy((i*2)+1,(j*2)+1); printf(" "); } } }
}
void comprobacion(int rejilla[][columnas], int filas, int col){ int i, j, x, y, reja[filas][col], vivas;
for(i=0; i<filas-1; i++){ for(j=0; j<col-1; j++){ if(rejilla[i][j] == 0){ vivas = 0; for(x=0; x<3; x++){ for(y=0; y<3; y++){ if((i+1)-x == -1 || (j+1)-y == -1 || (i+1)-x > filas-1 || (j+1)-y > col-1){ continue; }else if((i+1)-x == i && (j+1)-y == j){ reja[i][j] = rejilla[i][j]; }else if(rejilla[(i+1)-x][(j+1)-y] == 1){ vivas++; } } } if( vivas == 3){ reja[i][j] = 1; } }else if(rejilla[i][j] == 1){ vivas = 0; for(x=0; x<3; x++){ for(y=0; y<3; y++){ if((i+1)-x == -1 || (j+1)-y == -1 || (i+1)-x > filas-1 || (j+1)-y > col-1){ continue; }else if((i+1)-x == i && (j+1)-y == j){ reja[i][j] = rejilla[i][j]; }else if(rejilla[(i+1)-x][(j+1)-y] == 1){ vivas++; } } } if(vivas == 2 || vivas == 3){ reja[i][j] = 1; }else{ reja[i][j] = 0; } } } }
for(i=0; i<filas; i++){ for(j=0; j<col; j++){ rejilla[i][j] = reja[i][j]; } }
}
|
|
|
|
|
|
|