Foros del Web » Programación para mayores de 30 ;) » C/C++ »

!!Arreglos Dinámicos - Ejercicio Contraseñas (Infracción de acceso al leer ubicación)

Estas en el tema de !!Arreglos Dinámicos - Ejercicio Contraseñas (Infracción de acceso al leer ubicación) en el foro de C/C++ en Foros del Web. Hola! Agradecería su ayuda en un problema que me surgió realizando unos ejercicios de programación... La consigna es un tanto más compleja, sin embargo tengo ...
  #1 (permalink)  
Antiguo 05/01/2015, 03:19
 
Fecha de Ingreso: enero-2015
Mensajes: 1
Antigüedad: 9 años, 3 meses
Puntos: 0
Exclamación !!Arreglos Dinámicos - Ejercicio Contraseñas (Infracción de acceso al leer ubicación)

Hola! Agradecería su ayuda en un problema que me surgió realizando unos ejercicios de programación... La consigna es un tanto más compleja, sin embargo tengo problemas en uno de los pasos a seguir que indica crear arreglos dinámicos.

La idea es que el usuario ingrese un número en la consola con la cantidad de contraseñas que desea registrar (CantidadContr) y luego escribir una por linea. Estas deben ser guardadas en un arreglo para poder luego ordenarlas alfabéticamente y asignarles un determinado número segun cumplan o no determinadas condiciones.

Les muestro mi codigo fuente.

Cita:
//Instrucciones del Preprocesador
#include "stdafx.h"
#include <iostream>
#include <string.h>
#include <sstream>
using namespace std;
using std::getline;
//Declaración de Variables


unsigned int CantidadContr;


// Declaración de Funciones

struct Contraseña{
string FrasePass;
};

Contraseña* Registro = NULL;

void AlmacenarContr(unsigned int A)
{
Contraseña _Contraseña;

int i = 0;
while (i<=A)
{

getline(cin, _Contraseña.FrasePass);

if (Registro = NULL){

Registro = new Contraseña[1];
Registro[0] = _Contraseña;
i++;
}
else {
Contraseña* temp = Registro; //Aloja mi arreglo en una variable auxiliar temporal
Registro = new Contraseña[i+1]; // Cambia la cantidad de elementos en el arreglo LISTA
for (unsigned int z = 0; z < i; z++){ // Con un bucle FOR pasa todo los elementos de TEMP hacia Lista
Registro[z] = temp[z];
}
Registro[i] = _Contraseña;
i++;
delete[] temp;
}
}

}


int _tmain(int argc, _TCHAR* argv[])
{
cin >> CantidadContr;
AlmacenarContr(CantidadContr);
cin.get();
return 0;
}

El problema obviamente está en la función AlmacenarContr, posiblemente en el bucle de iterador "z"... Pero no logro descifrar que es lo que hice mal, disculpen mi ignorancia.

Me salta error diciendo "infracción de acceso al leer la memoria". He estado intentando depurar el codigo desde la madrugada y no pude. Desde ya agradezco su comprensión y agradezco cualquier tipo de ayuda!
  #2 (permalink)  
Antiguo 05/01/2015, 04:41
 
Fecha de Ingreso: julio-2012
Mensajes: 375
Antigüedad: 11 años, 9 meses
Puntos: 28
Respuesta: !!Arreglos Dinámicos - Ejercicio Contraseñas (Infracción de acceso al leer

Etiquetas HighLight y código indentado por favor:

Código C++:
Ver original
  1. unsigned int CantidadContr;
  2.  
  3. // Declaración de Funciones
  4.  
  5. struct Contraseña{
  6.     string FrasePass;
  7. };

Por cierto la ñ no es un carácter válido en C++...
  #3 (permalink)  
Antiguo 08/01/2015, 00:11
 
Fecha de Ingreso: enero-2015
Mensajes: 2
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: !!Arreglos Dinámicos - Ejercicio Contraseñas (Infracción de acceso al leer

Dale una mirada a este codigo espero sea de tu ayuda

Código C++:
Ver original
  1. #include<iostream>
  2. using namespace std;
  3.  
  4.  
  5. void addPassword(string data[], int cont){//funcion para añadir contraseñas pasado por referencia
  6.  
  7.      for(int i=0;i<cont;i++){
  8.  
  9.        cout<<"ingrese la pass numero "<<i+1<<endl;
  10.        cin>>data[i];
  11.     }
  12. }
  13.  
  14. int main(){
  15.  
  16.     int Npass;
  17.     string *passwords;
  18.  
  19.     cout<<"ingrese la cantidad de contrasenas a registrar"<<endl;
  20.     cin>>Npass;
  21.     passwords=new string[Npass];//cramos en tiempo de ejecucion el arreglo dinamico
  22.  
  23.     addPassword(passwords,Npass);//añadimos y pasamos por referencia
  24.     cout<<endl;
  25.  
  26.     for(int j=0;j<Npass;j++) cout<<passwords[j]<<endl;
  27.  
  28.  
  29.     delete[] passwords ;//eliminamos el arreglo dinamico
  30.  
  31. cin.get();
  32. cin.get();
  33. return 0;}

Etiquetas: contraseñas, ejercicio
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:09.