Domingo 22 de Diciembre de 2024, 22:10
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Problema Con Los Strings
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Problema Con Los Strings (Leído 1603 veces)
franc
Miembro MUY activo
Mensajes: 157
Problema Con Los Strings
«
en:
Domingo 21 de Diciembre de 2003, 18:36 »
0
hola, tengo una parte de un codigo que lo que hace es tomar un numero de jugadores ( para una partida ) y luego va pidiendo sus nombres... He pensado en hacerlo de esta forma:
Código: Text
char pers[n];
int i;
char nombre[10];
printf("¿ Para cuantos jugadores es la partida ?: ");
scanf("%ld",&jug);
for(i=1;i<=jug;i++)
{
clrscr();
printf("Introduce el nombre del jugador Nº%d: ",i);
gets(nombre);
pers[i]=nombre;
pero el borlandc me dice que no se puede convertir 'char *' en 'char' o algo así.
El objetivo de este codigo es poder usar pers
donde X es el numero de cada jugador con su respectivo nombre. De forma que yo podria decir...
Código: Text
for(j=1;j<=jug;j++)
{
printf("\n\n %s: Introduce el numero ( sin pasarse ): ",pers[j]);
scanf("%ld",&num);
}
de esta forma con el %s lo que saldria ahí es el nombre de cada jugador ( en teoria no ? )
Si alguien me puede ayudar se lo agradeceria, muchas gracias :)
Tweet
plaf
Miembro activo
Mensajes: 57
Re: Problema Con Los Strings
«
Respuesta #1 en:
Lunes 22 de Diciembre de 2003, 00:34 »
0
lo q pasa es q char pers[n]; es un string (si es q "n" esta #definido, xq no se pueden declarar arreglos de portes variables), y lo q tu quieres es un arreglo de strings, o sea algo como char pers[n][10];
lo otro es q no puedes llegar e igualar un string a otro, hay q hacerlo caracter a caracter o con una funcion como strcpy(); pero eso ni siquiera es necesario xq puedes simplemente en vez de hacer gets(nombre); hacer gets(pers
);
con esos 2 cambios deberia funcionar
pd: %ld es para long ints, cuantos jugadores quieres????
(aunque eso da lo mismo)
dreadlock
Miembro activo
Mensajes: 66
Re: Problema Con Los Strings
«
Respuesta #2 en:
Lunes 22 de Diciembre de 2003, 00:38 »
0
hola:
Primero espero que la respuesta se posteee correctamente, esque tengo algunos problemas con mi IE.
Pero en fin pues tu idea es buena y, si eso me a pasado e aqui 8una solucion viable,
primero te recomiendo que al pedir la candidad de jugadores ocupes una variable entera en lugar de la entera larga que ocupas, por que si es un juego asi ocupas menos memoria. Que siempre es bueno tom ar en cuenta.
Ahora esta parte es irrealizable
pers
=nombre;
por que nombre lo declaraste comu un arreglo de 10 caracteres
ahora en tu gets(nombre)
-->al ejecutar el programa te diria algu asi
;******************
Introduce el nombre del jugador 1:
--> si yo tecleo por ejemplo:
DEMONIO AZUL
-->notamos que esta cadena contiene 12 caracteres
-->por que en la variable nombre solo se guardarian los caracteres:
-->DEMONIO AZ
-->los caracteres UZ no se guardarian ¿Me explico?
esta parte del codigo esta bien pero en la parte que sigue, la de igualar las cadenas nombre con jugador, es irrealizable si entendiste la parte de arriba sabras por que es irrealizable, si no pues espero esto te ayude:
declaras:
char pers[n];
porsteriormente pides el numero de jugadores
si pulsas en la ejecucion del programa 7 pues pide 7 nombres es logico jejejeje
se guarda en jug.
Aqui algo que no entiendo, me imagino que la n de pers, la difiniste
3 define n 10
entonces pers almacena 10 caracteres como la otra variable nombre
pero cuando haces esto
for(i=1;i<=jug;i++)
{
clrscr();
printf("Introduce el nombre del jugador Nº%d: ",i);
gets(nombre);
pers
=nombre;
}
si lo piensas bien pers en la primera iteracion vale 1, despues 2, luego 3, etc hasta igualar jug.
ahora si lo analizamos como hace un instante tendiamos que pers, simpre almacenaria un caracter, como es un arreglo de n elementos.
primero almacenaria un valor, y siempre seria el primer carac6ter de la cadena nombre por lo que si nombre fuera "jugador 1"
pers[1] seria igual a "j". eso si funcionara mi teoria
bueno pero esa es la idea. por que esta igualdad
pers
=nombre;
es invalida no puedes igualar cadenas como si fuecen enteros o flotantes.
debes utilizar la funcion strcpy, o' strcopy no recuerdo bien como es, esta funcion esta incluida en string.h
strcpy(cadena1,cadena2)
donde cadena 1 es la cadena final
y cadena 2 cadena origen
por que el codigo en todo caso seria
strcpy(pers,nombre);
pero si te das cuenta se rescribiria n veces en pers, lo que guardaranb en una itreracion seria sustuido por la siguiente.
Veras esto es lo que ami seme ocurre:
Código: Text
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <string.h>
main(){
int n,i,numero;
char *nicks[10];//se declaran 10 apuntadores a cadena
char *jug;
clrscr();
printf("Cuantos jugadores: ");
scanf("%d",&n);
printf("\n %d jugadores",n);
i=1;
while(i<=n){
printf("\nDame el nombre del jugador %d : ",i);
fflush(stdin);//se vacia el bufer de memoria
gets(nicks[i]);
i++;}
i=1;
while(i<=n){
printf("\nDame un numero %s: ",nicks[i]);
scanf("%d",numero);
i++;}
}
ESpero que sirva bien, aca n st isio
UN intento de explicar lo inezplicable:D
franc
Miembro MUY activo
Mensajes: 157
Re: Problema Con Los Strings
«
Respuesta #3 en:
Lunes 22 de Diciembre de 2003, 14:31 »
0
mas o menos he entendido porqué no funciona mi codigo, voy a intentar hacerlo de otra manera. Gracias.
dreadlock tu codigo no funciona bien, si pongo 2 jugadores y inserto los nombres ( Fran , Sergio ) a la hora de pedir el numero pone.
Dame un numero (null):
y luego....
Dame un numero (sergio):
fin del programa.
algo falla, pero gracias por la explicacion
dreadlock
Miembro activo
Mensajes: 66
Re: Problema Con Los Strings
«
Respuesta #4 en:
Martes 23 de Diciembre de 2003, 00:00 »
0
si, tienes razon lo ciento, esque poco despues de escriboir el codigo mi maquina se colapso
, da la letra "e" y me habria mi pc, daba "q" y me abria buscar, no lo pude probar bien, pero lo bueno fue que de algo sirvio la explicacion, aveces resulto ser enredoso
UN intento de explicar lo inezplicable:D
© Jonathan ©
Moderador
Mensajes: 1671
Nacionalidad:
Re: Problema Con Los Strings
«
Respuesta #5 en:
Martes 23 de Diciembre de 2003, 01:43 »
0
Hola, estaba pensando y se me ocurria que para almacenar los nombres de los jugadores o la cantidad de los mismos podria almacenar memoria dinamicamente, bueno, es tan solo una idea ya que de tanto leer me he perdido bastante. Saludos y Feliz navidad para todos!!
EINSTEC Tecnología
«La única fuente del conocimiento es la experiencia.»
«Lo importante es no dejar de hacerse preguntas.»
franc
Miembro MUY activo
Mensajes: 157
Re: Problema Con Los Strings
«
Respuesta #6 en:
Martes 23 de Diciembre de 2003, 14:21 »
0
a k te refieres ?
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Problema Con Los Strings