tengo un problema con este programa corre pero al fina me manda un mensaje de error donde dice que la variable h ha sido corrompida o algo asi me podrían ayudar
[
#include "stdafx.h"
#include "conio.h"
#include "stdio.h"
void main()
{
int n,i,j,aux;
char h;
int *A;
char *p;
printf("Ingresa el numero de datos que quieras en tu lista: ");
scanf ("%d",&n);
A =new int [n+1];
printf("\n");
for(i=1;i<=n;i++)
{
printf("Ingresa la letra en la posicion %d es:",i);
scanf("%s",&h);
int x = static_cast <int> ( h );
A[i]=h;
}
printf("\n");
printf("\n");
for(i=1;i<=n-1;i++)
{
for(j=1;j<=n-1;j++)
{
if(A[j]>A[j+1])
{
aux=A[j];
A[j]=A[j+1];
A[j+1]=aux;
}
}
}
printf("\n Asendente \n");
for(i=1;i<=n;i++)
{
printf(" %c \n",A[i]);
}
printf("\n Desedente \n");
for(i=n;i>=1;i--)
{
printf(" %c \n",A[i]);
}
delete [] A;
getchar();
getchar();
}
]
di el mensaje de error exacto, copia y pegalo porque así no es realmente util...
este es el mensaje
Run-Time Check fallo # 2 - Pila alrededor de la variable "h" se corrompió.
no soy demasiado conocedor de c... pero esto me suena mal
A=h;
porque
char h;
int *A;
h es un caracter y A es un apuntador a un entero... creo que esos tipos no son compatibles
mm ok noce por que aparece así pero en mi código lo tengo
[ A[i]=h]
Cita de: alejandro5837 en 27 Junio 2013, 04:44 AMtengo un problema con este programa corre pero al fina me manda un mensaje de error donde dice que la variable h ha sido corrompida o algo asi me podrían ayudar
Ese programa tiene algunas deficiencias ya que no utiliza casi nada de C++. Por favor lee el tema |Lo que no hay que hacer en C/C++. Nivel basico| (http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html).
Cosas a cambiar hay a varias empezando por el nombre de los encabezados y la definición de la función main.
El error principal se encuentra en la linea:
scanf("%s",&h);
Ello porque el especificador "%s" es para leer una
palabra, si quieres leer un carácter debes utilizar " %c".
Un saludo
El programa este es un revuelto de c y c++ poco claro.
Lo primero que debes decidir es si programas en c o en c++... no queda muy bonito usar printf y scanf ( propias del lenguaje c ) con new y static_cast ( propias de c++ ).
Si usas c++ aprovecha sus características todo lo posible... en caso contrario casi mejor hazlo en c... mezclar de esta forma los dos lenguajes creo que solo sirve para que te lies más.
si decides hacerlo en c++ yo te propondría algunos cambios:
1. En vez de usar buffers usa vectores. Aprender a manejar la memoria es imprescindible... pero si no es estrictamente necesario dejar que la stl la maneje por ti te ahorrará muchos quebraderos de cabeza.
// c++
std::vector<int> A;
// c
int *A;
A =new int [n+1]; // esta línea te sobraría ya que el vector libera la memoria por ti.
// c++
A.push_back( h );
// c
A[i]=h;
2. Usa las clases c++ para leer y escribir
// c++
std::cout << "Ingresa el numero de datos que quieras en tu lista: ";
//c
printf("Ingresa el numero de datos que quieras en tu lista: ");
// c++
std::cin >> n;
// c
scanf("%c",&h);
3. Elimina variables sin uso. ( char *p ). Esto no es propio de c++ sino una buena práctica de programación :)
OK muchas gracias