Autor
|
Tema: Porque para asignarle valor a un vector mediante for tiene que ser una variable (Leído 2,464 veces)
|
Naimaderis
Desconectado
Mensajes: 74
|
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; } 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; } return 0; }
No entiendo muy bien la diferencia.
|
|
|
En línea
|
|
|
|
engel lex
|
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?
|
|
|
En línea
|
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
|
|
|
Naimaderis
Desconectado
Mensajes: 74
|
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; }
|
|
« Última modificación: 14 Diciembre 2016, 18:30 pm por Naimaderis »
|
En línea
|
|
|
|
jessec01
Desconectado
Mensajes: 5
inonvar
|
Se llama prototipo. http://nereida.deioc.ull.es/~pcgull/ihiu01/cdrom/c/contenido/node10.htmlaqui 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.
|
|
|
En línea
|
"originalidad en todo "
|
|
|
Naimaderis
Desconectado
Mensajes: 74
|
Se llama prototipo. http://nereida.deioc.ull.es/~pcgull/ihiu01/cdrom/c/contenido/node10.htmlaqui 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 numero"); 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; }
|
|
« Última modificación: 14 Diciembre 2016, 19:06 pm por Naimaderis »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
MOVIDO: Asignar un valor a una variable(ScriptA)Obtener esa variable (ScriptB)-UNITY c#
Scripting
|
Eleкtro
|
0
|
2,494
|
8 Octubre 2013, 17:49 pm
por Eleкtro
|
|
|
modificar valor de X variable de un proceso mediante un programa creado en c++
Ingeniería Inversa
|
razormta
|
7
|
3,874
|
25 Abril 2014, 16:52 pm
por Mad Antrax
|
|
|
¿saber qué tipo de valor tiene la variable con la que estoy trabajando? Ruby
Scripting
|
Saito_25
|
3
|
6,497
|
4 Abril 2015, 22:06 pm
por Eleкtro
|
|
|
Cargar fichero TXT y asignarle a cada linea, una variable. -- VBS --
Scripting
|
Cascuda
|
3
|
6,489
|
21 Junio 2015, 11:07 am
por Cascuda
|
|
|
[?] Metodo de Potencias para calculo de valor caractetistico y vector asociado
Scripting
|
.:: KsV ::.
|
0
|
1,899
|
26 Enero 2016, 21:40 pm
por .:: KsV ::.
|
|