Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - Triper0

#1
Hardware / Problema con el HDD
15 Mayo 2013, 06:10 AM
Bueno, hace bastante que no visitaba este querido foro, hoy vengo a plantear un problema que me está dando dolores de cabeza hace varios días.

Tengo una notebook Compaq Presario CQ40, 2GB de ram DDR2, dual core 2.0mhz, un HDD Hitachi HTS545025B9A300 de 232GB (en realidad tendría que tener 250GB).

Hace dos semanas aproximadamente decidí formatear la pc porque estaba andando bastante lenta... Antes la desfragmenté, le pase antivirus, ccleaner y todo lo que pueda llegar a usar para evitar formatear, pero le llegó la hora.

Le instalé Windows 7 Ultimate y no tuve problemas... Le instalé lo básico (AVG, Malwarebyte, Mozzila con el Fire FTP, Notepad++, Photoshop, Office) y cuando al otro día la voy a prender, estaba mucho tiempo en "Starting windows"...
Cuando iniciaba, apretaba el botón de inicio y se trababa... Así como 5 o 6 veces hasta que empezaba a funcionar... Pero abría el Firefox, lo usaba 1 minutos y me crasheaba con una pantalla azul.

Supuse por lo que vi en esa pantalla que era el disco, así que decidí pasarle algún programa que verifique los problemas.

Primero reparé con el sistema que trae AVG, después le pasé el Acronis que no encontró nada... Ahí mejoró hasta que la volví a apagar y empezó a suceder lo mismo.

Opté por usar el chkdsk /f /r, lo puse a las 11 de la noche, al otro día a las 9 de la mañana iba 51%, recién pasó a 52% a las 2 de la tarde :|
Decidí sacarlo, ejecuté el HDD Regenerator desde el S.O, llegó a 10% y me volvió a tirar la pantalla azul.
Reparé windows, reparé el inicio, hice chequeo de memoria y disco desde la BIOS, en fin... Muchísimas cosas que no me dieron solución, entonces dije, voy a volver a formatear.

Formatié nuevamente la pc, instalé el W7 Professional, con sus actualizaciones y todo al día... La máquina andaba bien, le instalé los programas básicos y hasta ayer andaba bien.
Hoy hable con un compañero y me recomendó que verifique por las dudas el estado del disco, para evitar posibles pérdida de datos (que por cierto ya perdí)... Entonces bajé el HD Tune, y empecé a analizar el disco.
En 5 horas llegó a 136GB (de 232GB totales), encontró 9 sectores malos, y la velocidad de escaneo del disco era de 0.1MB/s (más lento que lo que me baja Internet).
Lo llamativo es que desde que le pasé el HD Tune, es como que se dio cuenta que la estoy analizando y ahora me está andando mal... A veces se cuelga un ratito y vuelve a funcionar... Pero hasta ahora no me tiró ningún pantallazo azul.

Decidí cortar el scann y verifiqué la temperatura mediante el mismo programa, me figuraba en rojo, dándome una alerta de que cambie el disco, figurandome como que tenía picos de 65°, cuando lo óptimo era menos de 40°.

Bajé nuevamente el HDD Regenerator, lo hice booteable y lo ejecuté desde DOS... Empezó a analizar y "reparar", llegó hasta el 20% y me pedía que desde la BIOS camié el disco de AHCI a IDE... Pero, linda mi suerte que la BIOS de esta máquina no te permite cambiar eso, no tiene disquetera tampoco, así que no puedo usar el HDD Regenerator tampoco.


La verdad es que ya no sé que hacer, lo aconsejable supongo que es comprar un nuevo disco... Pero tengo las esperanzas de tratar de arreglar ALGUNOS sectores del mismo y de alguna forma, anular los otros sectores que esten defectuosos para evitar futuros dolores de cabeza.


En fin, me extendí demasiado, pero mi intención era explicarle todo lo que hice para que vayan descartando posibilidades :P

Ante todo muchas gracias y disculpen las molestias ocasionadas...

Saludos!

PD: Recién me salió un cartel del HDD Regenerator con esto, por ahí les da un indicio:
#2
Programación C/C++ / Archivos y Stdarg
2 Agosto 2011, 18:58 PM
Bueno, mi problemita es el siguiente: Quiero hacer un programita que recorra como parámetro más de un archivo (una cantidad indeterminada) y que luego, en un archivo que se llame "concat.txt" concatene todos los archivos que se pasaron por parámetro.

Hice lo siguiente, pero me crea el "concat.txt" con un montón de "ÿÿÿ" que si lo dejo corriendo se me llena el rígido, junto con otros archivos .txt locos... Se ve que estoy haciendo algo mal.

Acá les dejo el código:

#include <stdio.h>
#include <stdarg.h>

void concatenarArchivo (int cant, FILE *archEntrada, ...) {
char c;
//Declaramos el archivo que contendrá la concatenación de los demás archivos pasados por parámetro
FILE *archSalida;
FILE *arch;

//Utilizamos las funciones de stdarg para ir recorriendo la lista de argumentos
va_list a;
va_start(a,archEntrada);


while (cant--){
va_arg(a, FILE);
archSalida=fopen("concat.txt","at");
arch=fopen(a, "at");
while (!feof(arch)){
c= getc(arch);
putc(c, archSalida);
}
fclose(archSalida);
fclose(arch);
}
va_end(a);
}

int main(){
int cant=3;
FILE *archU;
FILE *archD;
FILE *archT;

archU=fopen("a.txt","r");
archD=fopen("b.txt","r");
archT=fopen("c.txt","r");

concatenarArchivo(cant, archU, archD, archT);

return 0;
}


Y en el caso de que se pasen 2 archivos por argumento, en vez de concatenarlo hay que copiarlo...

Los archivos del main son archivos que cree y los abrí directamente para probarlo, me interesa solamente que funcione la función concatenarArchivo

#3
Programación C/C++ / Colección de Archivos
1 Agosto 2011, 19:35 PM
Hola, nuevamente yo consultando.

Estoy practicando parciales de años anteriores ya que el miércoles rindo y quiero terminar de pulir todo, jaja. Es en el lenguaje C.

Mis preguntas en base a un parcial son las siguientes:

a- Defina el TAD archivo que defina el tipo Tarchivo, cuyas propiedades son: nombre(incluye la extensión), tipo(mime), fechaHoradeCreacion(int), tamaño (unsigned long), propiedades (char que indica: solo lectura, lectura-escritrua).

En este punto hice lo siguiente:

#ifndef _ARCHIVO
#define _ARCHIVO

typedef struct Archivo {
char nombre[15];
int fechaHoradeCreacion;
unsigned long tamaño;
char propiedades[18];
};

typedef struct Archivo Tarchivo;

#endif


En nombre use un char como dice, le puse 14 caracteres usando 10 lugares del arreglo para que pongan el nombre y 4 para la extensión (.txt, .bmp. dat o lo que fuere).
en fechaHoradeCreacion al igual que tamaño, no sé bien si es que tendré que pedirle al usuario que ingrese esos datos o yo mismo en base a funciones o métodos predefinidos o que tenga que definir yo obtenerlos del archivo que ingresó en "nombre".
Y en propiedades lo mismo, no sé si es que el usuario me tiene que decir si es un archivo de solo-lectura o lectura-escritura. (tengan en cuenta que son parciales en donde posees 1 hora y media para hacerlos, en hoja y papel y que sumado a esto hay un par de preguntas más...

Y con el tipo(mime) no tengo ni LA MENOR IDEA de a qué se refiere... En sí no sé si este parcial se va a tomar, ya que creo que hay conceptos del mismo que este año no explicaron, pero bueno, siempre es bueno hacerlos y aprender algo más.

b- Defina el TAD directorio que defina el tipo Tdirectorio que contiene una colección de archivos.

En este caso, hice lo siguiente:

#ifndef _DIRECTORIO
#define _DIRECTORIO

typedef struct Directorio{
FILE *archivo;
typedef struct Directorio *sig;
};

typedef struct Directorio *Tdirectorio;

#endif


Tome como "colección de archivos" a una lista que yo creo que contiene en cada nodo un archivo y el siguiente, obviamente.
Seguramente en vez de tener un archivo así como definí en "FILE *archivo" deberá contener el registro que definí antes de Tarchivo.
Pero no se me ocurre otra forma ni tampoco sé si eso que hice no es para que me asesinen por desubicado, jaja.

c- Agregue al TAD directorio una función que ordene los archivos dentro de un directorio, considerando la implementación de alguna de las funciones que permitan comparar dos archivos (nombre, tamaño, etc) implementando esta función en el TAD archivo.

Tdirectorio ordeno (Tdirectorio dir, int (compara) (Tarchivo, Tarchivo));

Bien, acá ya me perdí completamente. Cuando dice ordene los archivos dentro de un directorio creo entender que se refiere a que ordene los archivos que están en una determinada carpeta, por ende, lo que hice anteriormente está mal, ya que no hago referencia al directorio ni nada, sino a archivos que previamente el usuario cargó.
Y cuando dice "considerando la implementación de alguna de las funciones que permitan comparar dos archivos (nombre, tamaño, etc)" no sé si es que ya hay una función que lo haga, pero si la hay, no la encuentro... Trate de buscar por google pero sólo encuentro ejemplos de como implementar una en C++ o C# que no me sirve ni medio...
En si no entiendo bien el enunciado  :-X


Desde luego aclaro que no pretendo ni deseo que me hagan todo el parcial (porque por ahí se puede interpretar mal mi consulta), si no que por ahí me aclaren ciertas pautas o me dejen códigos de ejemplos para que pueda entender...
Por el momento voy a seguir con los otros parciales que son más abocados a cosas que estoy seguro que vi y este lo dejo para cuando la tenga un toque más clara... Jaja

Desde ya muchísimas gracias :D

#4
Bueno, mi problema es el siguiente:
Desde que empecé con C, el profesor me recomendó usar Linux.
El tema es que SIEMPRE que uso punteros, y toco la memoria, cuando compilo me sale "Violación de segmento"...

El profesor me dijo "El problema no es Linux, el problema es el programador" ¬¬

En fin, no encuentro ayuda, sé que estoy haciendo algo mal, pero no sé qué... Sé que Linux no te deja tocar la memoria como si lo hace Windows (el cual no me genera problema con esto)...

En fin, acá dejo un código que justo estaba haciendo hoy, es muy simple, compila excelente, pero dice el famoso "violación de segmento"...

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

typedef struct {
char *nombre;
char *apellido;
char *fecha;
char *legajo;
char *tipDoc;
int DNI;
}Alumno;

int main(){
Alumno alu,alu2;
malloc(sizeof(alu.nombre));
malloc(sizeof(alu.apellido));
malloc(sizeof(alu.fecha));
malloc(sizeof(alu.legajo));
malloc(sizeof(alu.tipDoc));
strcpy(alu.nombre,"Esteban");
strcpy(alu.apellido,"Gonzalez");
strcpy(alu.fecha,"02111991");
strcpy(alu.legajo,"10662/3");
strcpy(alu.tipDoc,"DNI");
alu.DNI=36363023;

malloc(sizeof(alu2.nombre));
malloc(sizeof(alu2.apellido));
malloc(sizeof(alu2.fecha));
malloc(sizeof(alu2.legajo));
malloc(sizeof(alu2.tipDoc));

alu2=alu;

printf("El nombre del alu es: %s, el de alu2 es: %s\n",alu.nombre,alu2.nombre);
printf("El apellido del alu es: %s, el de alu2 es: %s\n",alu.apellido,alu2.apellido);
printf("La fecha del alu es: %s, el de alu2 es: %s\n",alu.fecha,alu2.fecha);
printf("El legajo del alu es: %s, el de alu2 es: %s\n",alu.legajo,alu2.legajo);
printf("El tipo de documento del alu es: %s, el de alu2 es: %s\n",alu.tipDoc,alu2.tipDoc);
printf("El DNI del alu es: %d, el de alu2 es: %d\n\n\n",alu.DNI,alu2.DNI);

strcpy(alu.nombre,"Jose");

printf("El nombre del alu es: %s, el de alu2 es: %s\n",alu.nombre,alu2.nombre);
printf("El apellido del alu es: %s, el de alu2 es: %s\n",alu.apellido,alu2.apellido);
printf("La fecha del alu es: %s, el de alu2 es: %s\n",alu.fecha,alu2.fecha);
printf("El legajo del alu es: %s, el de alu2 es: %s\n",alu.legajo,alu2.legajo);
printf("El tipo de documento del alu es: %s, el de alu2 es: %s\n",alu.tipDoc,alu2.tipDoc);
printf("El DNI del alu es: %d, el de alu2 es: %d\n",alu.DNI,alu2.DNI);

return 0;
}



Gracias de antemano...