Título: ¿Por qué mi programa deja de funcionar? Publicado por: LML-32 en 26 Mayo 2016, 05:51 am Hola, espero que alguien pueda ayudarme. Estoy programando en C++, guardo una cadena de 25 caracteres y necesito desglosarla por partes, así que sustraje algunos caracteres en variables de tipo string, para luego almacenarlas en vectores (sé que lo puedo hacer sólo con cadenas, pero usarlos es requerimiento para mi práctica).
He estado compilando parte por parte y me di cuenta de que el problema ocurre cuando utilizo más de tres vectores, los primeros tres funcionan bien y corre el programa, pero al leer el cuarto deja de funcionar y no entiendo el por qué, no me marca ningún error ni advertencia. ¿Alguien sabe cómo corregirlo o qué estoy haciendo mal? :c Mi programa está súper largo, pero este es uno corto que hice para intentar hallar el problema: Citar #include<iostream> #include<conio.h> #include<string.h> using namespace std; int main (void) { string m,a,b,c1,c2,d1,d2,e,f; string lugar[4],dia[2],hora1[2],hora2[2],vgrados[3],vnudos[2],visib[2],nubes[3]; cout<<"Teclea un metar (25 caracteres, sin espacios): "; cin>>m; a=m.substr(0,4); b=m.substr(4,2); c1=m.substr(6,2); c2=m.substr(8,2); d1=m.substr(11,3); d2=m.substr(14,2); e=m.substr(18,2); f=m.substr(22,3); lugar[4]=a; if(lugar[4]=="MMML") { cout<<"Mexicali"; } else { if(lugar[4]=="MMTJ") { cout<<"Tijuana"; } } dia[2]=b; cout<<"\nDia: "<<dia[2]; hora1[2]=c1; cout<<" Hora: "<<hora1[2]; hora2[2]=c2; cout<<":"<<hora2[2]<<" Zulu."; vgrados[3]=d1; cout<<vgrados[3]; } Título: Re: ¿Por qué mi programa deja de funcionar? Publicado por: AlbertoBSD en 26 Mayo 2016, 06:21 am Posiblemente es un error de memoria, estas usando algun valor no inicializado o fuera de los limites establecidos.
Pero sin codigo no puedo decirte con exactitud cual es la falla. Saludos. Título: Re: ¿Por qué mi programa deja de funcionar? Publicado por: LML-32 en 26 Mayo 2016, 06:26 am Lo siento, ya agregué el código x)
Título: Re: ¿Por qué mi programa deja de funcionar? Publicado por: AlbertoBSD en 26 Mayo 2016, 06:43 am Creo que estas omitiendo la posicion del arreglo 0.
Si declaras algo como Código
No puedes usar la posicion 3, solo la 0, la 1 y la 2 (Solo del 0 al 2) Que siguen siendo 3 posiciones. Lo mismo para las otras variables.... Otra cosa si vas a usar iostream no necesitas stdio.h Ya con el namespace es suficiente.. Saludos Título: Re: ¿Por qué mi programa deja de funcionar? Publicado por: LML-32 en 26 Mayo 2016, 06:53 am Pero lo que está dentro de los corchetes es la cantidad de caracteres del vector, ¿no?
Funciona todo bien hasta la parte donde indico: " vgrados[3]=d1;" Título: Re: ¿Por qué mi programa deja de funcionar? Publicado por: AlbertoBSD en 26 Mayo 2016, 06:55 am Ademas veo que solo estas usando una cadena de cada arreglo.
No es necesario declarar Código
Si solo vas a almacenar una cadena. En dado caso solo declara Código
Edito No es asi, un string ya es un string no tienes que definirle la canitdad de caracteres. Si por el contrario quieres usar char entonces si necesitas definir la cantidad. Saludos! Funciona todo bien hasta la parte donde indico: " vgrados[3]=d1;" Es lo que te comento lo que tu declarastes es un arreglo de cadenas y lo puedes tener 3 cadenas diferntes Código
Si solo vas a usar una cadena solo declara Código
Título: Re: ¿Por qué mi programa deja de funcionar? Publicado por: LML-32 en 26 Mayo 2016, 07:08 am Cambiando la forma de declararlo sí funciona, pero se supone que tengo que hacer arreglos de tipo vector...
¡Gracias de todos modos! :-) Título: Re: ¿Por qué mi programa deja de funcionar? Publicado por: AlbertoBSD en 26 Mayo 2016, 07:14 am Tienes que hacerlo con char?
Código
Título: Re: ¿Por qué mi programa deja de funcionar? Publicado por: LML-32 en 26 Mayo 2016, 07:23 am Creo que tengo que hacerlo con string, para extraer caracteres. Haz de cuenta que de un código así MMML181441Z32007KT10SMSKC tengo que separar parte por parte para que me diga el lugar, la fecha, etc.
Lo hice como en el código que dejaré abajo (y funciona), pero no sé cómo cambiarlo para usar un arreglo vector. Código: #include<iostream> Título: Re: ¿Por qué mi programa deja de funcionar? Publicado por: AlbertoBSD en 26 Mayo 2016, 07:30 am A ver te dejo una version :rolleyes: :rolleyes: Que involucra puros char...
Código
Si lo que quieres es usar un arreglo de cadenas entonces... Declara solo 2 variables Código
Y cuando copies las cadenas al arreglo como ya lo haces usa: Código
El detalle es que todas las variables tendran el nombre de arrglo... lo cual no es muy sugerente de que contiene esa variable. Saludos Título: Re: ¿Por qué mi programa deja de funcionar? Publicado por: LML-32 en 26 Mayo 2016, 07:48 am Oh, ya veo, ya entendí lo que me decías del char y el string. Entonces lo cambiaré como en tu ejemplo, ¡muchas gracias! :D
EDITO: ¡Ya lo terminé y funciona! En serio te agradezco muchísimo ;-) ;D |