elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


  Mostrar Temas
Páginas: [1]
1  Programación / Programación C/C++ / Como extraer datos de un txt y guardar en funcion de un valor en un binario?? en: 27 Enero 2016, 15:47 pm
Muy buenas amigos,
para un ejercicio me piden que lea un txt que tenga la siguiente estructura:

nombre # renta nota

a partir de este txt, tengo que filtrar por los que tengan una renta menor que x (por ejemplo 10.000) y solo esos guardarlos en un archivo binario.

De momento lo que tengo hecho es lo que veis abajo, lo unico que he conseguido es que si pongo un "cout" pinto todas las lineas del txt, pero no consigo filtrar por el segundo valor y meter todo lo que cuadre en un archivo binario...

En el código que tengo quería probar a sacar el único nombre que tenia con el valor 6.000 pero no lo hace...

me podeis ayudar?

gracias!!

archivo .h:

Código
  1.  
  2. // main.h
  3.  
  4. #pragma once
  5.  
  6. #include <iostream>
  7. #include <fstream>
  8. #include <string>
  9. using namespace std;
  10.  
  11. #define MAX 50
  12.  
  13. typedef struct {
  14. char nombre[MAX];
  15. int renta;
  16. float nota;
  17. }lista;
  18.  
  19. int getLength(lista[]);
  20.  

archivo cpp
Código
  1. #include "Header.h"
  2.  
  3. void main()
  4. {
  5.  
  6.  
  7. lista persona;
  8. fstream archivo, archivodat;
  9. archivo.open("solicitudes.txt", ios::in);
  10. archivodat.open("aceptados.dat", ios::out | ios::binary);
  11. if (!archivo) {
  12. cout << "Error al leer archivo";
  13. }
  14. else {
  15. if (!archivodat)
  16. cout << "Error creando el archivo binario";
  17. else {
  18. archivo.getline(persona.nombre, MAX, '#');
  19. archivo >> persona.renta, ' ';
  20. if (persona.renta == '6000')
  21. {
  22. archivo >> persona.nota;
  23. while (!archivo.eof()) {
  24. archivo.getline(persona.nombre, MAX, '#');
  25. archivo >> persona.renta, ' ';
  26. archivo >> persona.nota;
  27. archivodat.write(reinterpret_cast<const char *>(&persona), sizeof(lista));
  28. }
  29. archivodat.close();
  30. }
  31.  
  32. }
  33. archivo.close();
  34. }
  35.  
  36. system("pause");
  37. }
  38.  
2  Programación / Programación C/C++ / Ayuda con una ordenacion de un array please? :P en: 12 Diciembre 2015, 19:30 pm
Buenas amigos! Para clase tengo que ordenar un array alfabeticamente, es un array que se forma a partir de la lectura de un fichero, tiene 4 columnas, la primera es el nombre que es por la que quiero ordenarlo... el caso es que he llegado a esto:

Código:
void sortByName(producto productoArray[], int pLength) {
char *temp;
int i, j;
for (i = 0; i<pLength - 1; i++) {
for (j = i + 1; j<pLength; j++) {
if (strcmp(productoArray[i].nombre, productoArray[j].nombre) > 0) {
temp = productoArray[i].nombre;
productoArray[i] = productoArray[j];
*productoArray[j].nombre = *temp;
}
}
}
for (int i = 0; i<pLength; i++)
cout << i << ". Nombre: " << productoArray[i].nombre << ", Codigo de barras: " << productoArray[i].codigobarras
<< ", Precio: " << productoArray[i].precio << ". Fecha de entrada: " << productoArray[i].fechaentrada.dia
<< "/" << productoArray[i].fechaentrada.mes << "/" << productoArray[i].fechaentrada.anyo << endl;
}

Peeeeeero, esto me cambia el nombre de todos los productos por el nombre del que seria el primero ordenado, es decir, si fuera el alfabeto, el array quedaria con todos A A A A A A A A menos el último, que deja la Z.

A esta funcion la llamo asi:

Código:
void sortByName(producto productoArray[], int pLength);

¿Podéis ayudarme?

Mil gracias!
3  Programación / Programación Visual Basic / Ayuda para comparar dos archivos txt y extraer el contenido de uno de ellos?? en: 14 Julio 2015, 16:41 pm
Hola amigos!!! tengo un problemilla... tenia este script en vbs que me servia para extraer el hostname de un equipo y meterlo como una variable en WinPE

Código:
Function UserExit(sType, sWhen, sDetail, bSkip)
oLogging.CreateEntry "entered UserExit ", LogTypeInfo
UserExit = Success
End Function

Function GetOfflineComputername()
On Error Goto 0

If oEnvironment.Item("OSVERSION")="WinPE" Then
Dim CompName : CompName = ""
Dim ret, sOldSystem : sOldSystem = ""
For Each drv In Array("C", "D", "E", "F")
If ofso.FileExists(drv & ":\windows\system32\config\system") Then
sOldSystem = drv & ":\windows\system32\config\system"
Exit For
End If
Next
oLogging.CreateEntry "Mounting Offline registry " & sOldSystem, LogTypeInfo
ret = oShell.Run ("reg load HKLM\z " & sOldSystem, 0, True)
If ret = 0 Then
CompName = oShell.RegRead("HKLM\z\ControlSet001\Services\Tcpip\Parameters\Hostname")
If CompName <> "" Then
oLogging.CreateEntry "Found old computername '" & CompName & "'", LogTypeInfo
Else
oLogging.CreateEntry "Old computername name could not be found", LogTypeWarning
End If
Else
oLogging.CreateEntry "Could not mount offline registry " & sOldSystem, LogTypeWarning
End If
oShell.Run "REG UNLOAD HKLM\Z", 0, True
Else
CompName = oShell.ExpandEnvironmentStrings("%Computername%")
End If

GetOfflineComputername = CStr(CompName)

End Function

Este me funciona perfectamente, peeeeero ahora necesito hacer lo siguiente...

Tengo un numero o nombre en un txt, solo ese número (ejemplo: AAAA0001)

En otro archivo txt tengo el siguiente esquema:

AAAA0001#BBBB0001#CCCC0001#DDDD0001
EEEE0001#FFFF0001#GGGG0001#HHHH0001

Así muchas lineas... tengo que comprobar en que linea esta el contenido del primer TXT y después quedarme SOLO con el segundo valor (BBBB0001) y guardarlo en una variable (o meterlo en el script de arriba de alguna manera fijo)....

Hasta ahora lo que he conseguido es esto:

Código:
dim oshell
dim fich, fs, fich2, ncx, linea

'ubicación de ficheros
nombre_fich="c:\fichero1.txt"
nombre_fich2="c:\fichero2.txt"

set oshell=createobject("WScript.shell")
set fs=createobject("scripting.FileSystemObject")

'comprobamos que existan los ficheros
if not fs.FileExists(nombre_fich) then
  wscript.echo "no existe el fichero "& nombre_fich
  WScript.Quit 4
end if

if not fs.FileExists(nombre_fich2) then
  wscript.echo "no existe el fichero "& nombre_fich2
  WScript.Quit 4
end if

'Si hemos llegado hasta aquí es que existe y lo abrimos
set fich=fs.OpenTextFile (nombre_fich, 1, "True" )

' Almacenamos en la variable linea el contenido de fichero1
Do While fich.atEndOfStream <> True
  linea=fich.ReadLine
' Ahora mostramos la línea leída
  wscript.echo linea
Loop

set fich2=fs.OpenTextFile (nombre_fich2, 1, "True" )

Do While fich2.atEndOfStream <> True
  linea2=fich2.ReadLine
' Ahora mostramos la línea leída
  wscript.echo linea2
' Parseamos los campos
  campos = split(linea2,"#")
  for each b in campos
    wscript.echo "valor del campo: "&b
  next
Loop

wscript.echo linea
wscript.echo linea2

fich.close

Vale, consigo imprimir la linea del fichero1 y ademas imprimir todo el fichero2, pero me he quedado estancado jeje.

Me ayudáis??

Muchas gracias!!

Un saludo
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines