Este codigo me funciona:
#include <stdio.h>
main(){
int nombre[47];
double valores[1];
int i;
int h = 1;
for (i = 0 ; i < 48 ; i++)
{
nombre[i] = h;
printf("%d",nombre[i]);
}
return 0;
}
Pero sin embargo, este sigue infinitamente:
#include <stdio.h>
main(){
int nombre[47];
double valores[1];
int i;
for (i = 0 ; i < 48 ; i++)
{
nombre[i] = 1;
printf("%d",nombre[i]);
}
return 0;
}
No entiendo muy bien la diferencia.
tu código corre (casi) perfecto... nada de bucles infinitos
varias cosas...
- main debe ser int...
- la identación es sumamente imporatnte a la hora de leer el codigo, usala
- i < 48 con int nombre[47]... que hablamos de que i debe ser menor que el numero de asignación porque el 0 se cuenta?
Casualmente, justo habia tratado eso, y lo cambie por 48, en realidad, yo puse 47 contando el 0. Pense que arrancaba desde 0, entonces dije {0,1,2, ... ,47} Enseguida que me percate que eran 48 contando el 0, lo arregle ^^. Gracias por estar siempre. (Me di cuenta, porque le faltaba imprimir el 12 de copa jaja)
Solo para chequear, la identacion ahora esta bien?
#include <stdio.h>
int main(){
int nombre[48];
double valores[1];
int i;
for (i = 0 ; i < 48 ; i++) /* se le asigna a las 48 cartas el estado "1", significa que existen */
{
nombre[i] = 1;
}
int j;
int sum;
for (j = 0 ; j != 12 ; j++) /* imprime las cartas existentes */
{
(nombre[j] == 1) ? sum = nombre[j] + j, printf("%d de espada \t", sum) : printf("\t \t \t");
(nombre[j+12] == 1) ? sum = nombre[j] + j, printf("%d de oro \t", sum) : printf("\t \t \t");
(nombre[j+24] == 1) ? sum = nombre[j] + j, printf("%d de basto \t", sum) : printf("\t \t \t");
(nombre[j+36] == 1) ? sum = nombre[j] + j , printf("%d de copa \n", sum) : printf("\t \t \t");
}
return 0;
}
Estoy dudando si no va todo con una identacion mas por el "main"
El codigo anterior, funciona a la perfección. El problema viene ahora, que quiero reorganizarlo en 2 funciones, una que crea las cartas (Asigna a los 48 lugares un 1) y otra, que imprime las cartas existentes:
#include <stdio.h>
void crearcartas(void){
int nombre[48];
double valores[1];
int i;
for (i = 0 ; i < 48 ; i++) /* se le asigna a las 48 cartas el estado "1", significa que existen */
{
nombre[i] = 1;
}
return 0;
}
void imprimircartas(void){
int j;
int sum;
for (j = 0 ; j != 12 ; j++) /* imprime las cartas existentes */
{
(nombre[j] == 1) ? sum = nombre[j] + j, printf("%d de espada \t", sum) : printf("\t \t \t");
(nombre[j+12] == 1) ? sum = nombre[j] + j, printf("%d de oro \t", sum) : printf("\t \t \t");
(nombre[j+24] == 1) ? sum = nombre[j] + j, printf("%d de basto \t", sum) : printf("\t \t \t");
(nombre[j+36] == 1) ? sum = nombre[j] + j , printf("%d de copa \n", sum) : printf("\t \t \t");
}
return 0;
}
int main(){
crearcartas();
imprimircartas();
return 0;
}
Se llama prototipo.
http://nereida.deioc.ull.es/~pcgull/ihiu01/cdrom/c/contenido/node10.html
aqui encuentra material de ayuda.
También tiene que tener en cuenta, que es muy importante que es le especifique todo lo que desea que haga tu programa a la computadora.
Es por eso el uso de los prototipo que no es mas que una inicializacion de una funcion para que el compilador sepa de que tipo es ej: int float char void. o la cantidad de parametro.
Recomiendo que te empiece acostumbra a trabajar de esa forma para concepto mas avanzado de suma importancia.
Cita de: jessec01 en 14 Diciembre 2016, 07:21 AM
Se llama prototipo.
http://nereida.deioc.ull.es/~pcgull/ihiu01/cdrom/c/contenido/node10.html
aqui encuentra material de ayuda.
También tiene que tener en cuenta, que es muy importante que es le especifique todo lo que desea que haga tu programa a la computadora.
Es por eso el uso de los prototipo que no es mas que una inicializacion de una funcion para que el compilador sepa de que tipo es ej: int float char void. o la cantidad de parametro.
Recomiendo que te empiece acostumbra a trabajar de esa forma para concepto mas avanzado de suma importancia.
Creo que lo he entendido, muchas gracias! Ademas, voy a tomar la pagina que pasaste para seguir aprendiendo.
El error del programa que pase, no es eso, por lo que veo, el error esta en la lineal 24 con el " (nombre[j] == 1) ? sum = nombre[j] + j" ya que el " int nombre[48];" lo defini en la funcion crear cartas, no en el imprimir. Mi pregunta es ¿Como podria solucionar eso? Si le pongo el "int nombre[48];" se me descontrola todo, lo cual es logico.
Logre terminar el programa ^^, basicamente es para el denominado juego llamado el "chinchon", o la "conga". Que cartas te pueden tocar.
#include <stdio.h>
int main(){
int nombre[4][12];
double valores[1];
int i;
for (i = 0 ; i < 12 ; i++) /* se le asigna a las 48 cartas el estado "1", significa que existen */
{
nombre[0][i] = 1;
nombre[1][i] = 1;
nombre[2][i] = 1;
nombre[3][i] = 1;
}
int j;
int sum;
for (j = 0 ; j != 12 ; j++) /* imprime las cartas existentes */
{
(nombre[0][j] == 1) ? sum = nombre[0][j] + j, printf("%d de espada \t", sum) : printf("\t \t \t");
(nombre[1][j] == 1) ? sum = nombre[1][j] + j, printf("%d de oro \t", sum) : printf("\t \t \t");
(nombre[2][j] == 1) ? sum = nombre[2][j] + j, printf("%d de basto \t", sum) : printf("\t \t \t");
(nombre[3][j] == 1) ? sum = nombre[3][j] + j , printf("%d de copa \n", sum) : printf("\t \t \t");
}
int k,g;
do { /* elegir que cartas no estan disponibles */
printf("introduzca el palo");
scanf("%d",&k);
printf("introduzca el numero");
scanf("%d",&g);
nombre[k][g] = 0;
for (j = 0 ; j != 12 ; j++) /* imprime las cartas existentes */
{
(nombre[0][j] == 1) ? sum = nombre[0][j] + j, printf("%d de espada \t", sum) : printf("\t \t");
(nombre[1][j] == 1) ? sum = nombre[1][j] + j, printf("%d de oro \t", sum) : printf("\t \t");
(nombre[2][j] == 1) ? sum = nombre[2][j] + j, printf("%d de basto \t", sum) : printf("\t \t");
(nombre[3][j] == 1) ? sum = nombre[3][j] + j , printf("%d de copa \n", sum) : printf("\t \t");
}
} while (k != EOF);
return 0;
}