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 - seryioo

#1
Buenos días.
Estoy liado con Haskell que me la dejé para verano en la carrera.

El ejercicio dice lo siguiente:

Consideremos la ecuación de segundo grado ax2 + bx + c = 0.
a) Define una función raíces que tome tres parámetros (correspondientes a los coeficientes a, b y c
de la ecuación) y devuelva una tupla con las dos soluciones reales de la ecuación (para calcular la
raíz cuadrada, usa la función predefinida sqrt). Recuerda que el discriminante se define como b2-
4ac y que la ecuación tiene raíces reales si el discriminante no es negativo.


Yo he hecho esto:

raices :: Float-> Float-> Float-> (Float, Float)
raices a b c | discriminante<0 = error "Raices no reales"
             | otherwise = ((-b + raiz)/denominador, (-b - raiz)/denominador)
  where
    discriminante = (b*b - 4*a*c)
raiz          = sqrt discriminante
denominador   = 2*a


Pero me tira el siguiente error:

parse error on input `='
    Perhaps you need a 'let' in a 'do' block?
    e.g. 'let x = 5' instead of 'x = 5'
   |
91 |         raiz          = sqrt discriminante
   |                       ^



La solución ya la tengo, pero quiero saber que error estoy cometiendo, ya que no es la primera vez que me aparece.

Gracias!
#2
Android / Diseño de interfaz en una app
27 Mayo 2016, 10:41 AM
Buenos días a todo.
Hace poco que he terminado un curso de desarrollo de apps Android y me he puesto a toquetear un poco con el Android Studio para hacer una app.

La app la tengo ya lista, pero me a surgido una duda. ¿Cómo me puedo currar más la interfaz? Quiero hacer que la app se vea menos amateur y la cosa es que como tengo Buttons y otros elementos "basicos" por el layout lo parece bastante.

He estado mirando por Google pero no saco nada en claro. Por ejemplo, si quiero diseñar un button o un listView más currado y no ponerlo tal y como se ve por defecto, cómo lo hago?
¿Existen herramientas para diseñar estos recursos gráficos?

Si alguien me pudiera orientar se lo agradecería. He estado buscando libros pero tampoco he visto nada relevante...
#3
Programación C/C++ / Error a acceder a registro
23 Febrero 2016, 10:55 AM
Buenos días, tengo este registro:

Código (cpp) [Seleccionar]

struct TPregunta {
   string pregunta;
   int respuestaCorrecta;
   string resp1, resp2, resp3;
};


y estoy intentando pasar de un fichero al registro la información correspondiente controlada por un numero, este número controla el acceso a la pregunta 1,2,3...

Uso:
Código (cpp) [Seleccionar]

read>>p.pregunta[num]>>p.respuestaCorrecta[num]>>p.resp1[num]>>p.resp2[num]>>p.resp3[num];


Pero el compilador me da error en esta parte "p.respuestaCorrecta[num]"

Estoy accediendo bien al registro?

Gracias.



El enunciado es este, por si os resulta más sencillo:

Implementar un subprograma denominado leePregunta que reciba por parámetro el nombre
de un fichero y un número natural. Este fichero contendrá una serie de preguntas y sus posibles
respuestas en el siguiente formato (cada pregunta o respuesta ocupan una sola línea):
pregunta 1
nº respuesta correcta
respuesta 1
respuesta 2
respuesta 3
pregunta 2.
...

El subprograma también recibirá por parámetro el número de la pregunta que se quiere leer y
devolverá un parámetro de salida con los datos de la pregunta correspondiente en el fichero
almacenado en una estructura del tipo TPregunta.
#4
Buenas tardes, estoy haciendo un ejercicio de programación y me encuentro con el problema de que no se introducir un string al final de un fichero.

Básicamente el problema se reduce a:
Código (cpp) [Seleccionar]

ofstream write (fichero.c_str());
string palabra;

//COMO ANYADIR "PALABRA" AL FINAL DE "FICHERO"?
#5
Buenas, llevo desde ayer dándole vueltas a este ejercicio en el que tengo que crear una agenda.

Os voy a dejar el código de las funciones y lo que se supone que debe hacer cada una.

Código (cpp) [Seleccionar]

//- Definiciones de funciones -----------------------------------------

void inicializar_agenda(Tagenda& ag){
    ag.numEntradas=0;
}

void a_mayusculas(string& str){
    for(int pos=0; pos<str.size(); pos++){
        if(str[pos]>='a' && str[pos]<='z'){
            str[pos]-=32;
        }
    }
}

void leer_contacto(Tentrada& ent){
    string nombre, apellido;
    long numero;
    cout<<"Introduce nombre, apellido y numero de contacto: ";
    cin>>ws;
    cin>>nombre>>apellido>>numero;

    a_mayusculas(nombre);
    a_mayusculas(apellido);

    ent.nombre=nombre;
    ent.apellido=apellido;
    ent.numero=numero;
}

void insertar_contacto(Tagenda& ag, const Tentrada& ent, bool& ok){
    if(ag.numEntradas>=DIM-1) ok=false;
    else{
        int pos=0;
        while(pos<=ag.numEntradas){
            if(ag.entradas[pos].nombre==ent.nombre && ag.entradas[pos].apellido==ent.apellido) ok=false;
            else{
                ok=true;
                ag.entradas[pos].nombre=ent.nombre;
                ag.entradas[pos].apellido=ent.apellido;
                ag.entradas[pos].numero=ent.numero;
            }//end else
            ++pos;
        }//end while

    }//end else
}

//int pos_en_agenda(string nom, string apdo, const Tagenda& ag);

void eliminar_contacto(Tagenda& ag, string nom, string apdo, bool& ok){
    a_mayusculas(nom);
    a_mayusculas(apdo);
    int pos=0;
    while(pos<=ag.numEntradas){
        if(ag.entradas[pos].nombre==nom && ag.entradas[pos].apellido==apdo){
            ok=true;
            ag.entradas[pos].nombre=ag.entradas[ag.numEntradas].nombre;
            ag.entradas[pos].apellido=ag.entradas[ag.numEntradas].apellido;
            ag.entradas[pos].numero=ag.entradas[ag.numEntradas].numero;
            --ag.numEntradas;
        }else ok=false;
        ++pos;
    }
}

long numero(const Tagenda& ag, string nom, string apdo){
    long n=0;
    a_mayusculas(nom);
    a_mayusculas(apdo);
    int pos=0;
    while(pos<=ag.numEntradas){
        if(ag.entradas[pos].nombre==nom && ag.entradas[pos].apellido==apdo) n=ag.entradas[pos].numero;
        ++pos;
    }//end while
    return n;
}

void listar_agenda(const Tagenda& ag){
    int pos=0;
    while(pos<=ag.numEntradas){
         cout<<ag.entradas[pos].nombre<<" "<<ag.entradas[pos].apellido<<" "<<ag.entradas[pos].numero;
         ++pos;
    }//end while
}





ENUNCIADOS:

ara poder utilizar una agenda, primero habrá que inicializarla simplemente poniendo el nº
de entradas a 0. De esto se encargará la función siguiente

void inicializar_agenda(Tagenda& ag).
Para introducir contactos en la agenda se utilizarán las funciones

void leer_contacto(Tentrada& ent),
que se encargará de pedir y leer, de la consola, los datos de un contacto, pasar nombre y
apellido a mayúsculas, y rellenar con ellos los campos de la entrada ent que recibe como
argumento, y

void insertar_contacto(Tagenda& ag, const Tentrada& ent, bool& OK),
que pedirá los datos de un nuevo contacto para agregarlo a la agenda ag; pero si ya existe
una entrada en la agenda con el mismo nombre y apellido o la agenda está llena, no lo
agrega y devuelve false en el parámetro OK, de lo contrario agrega un nuevo registro con
los datos del contacto en la primera posición libre de la agenda y devuelve true en OK.
Recuérdese que los datos de una entrada deberán estar siempre en mayúsculas.
Para eliminar un contacto de la agenda se utilizará la función

void eliminar_contacto(Tagenda& ag, string nom, string apdo,bool& OK),
que buscará la entrada correspondiente al contacto cuyo nombre y apellido se especifican en
los argumentos y, si la encuentra, la elimina de la agenda ag y devuelve true en el
parámetro OK; pero si no lo encuentra, no modifica la agenda y devuelve false en OK. Para
eliminar la entrada bastará con copiar en su lugar del array la entrada situada en la última
posición ocupada y disminuir el número de entradas de la agenda. Se deberá tener cuidado
con las diferencias entre mayúsculas y minúsculas.
Para obtener el número de teléfono de un contacto se utilizará la función

long numero(const Tagenda& ag, string nom, string apdo),
que buscará en la agenda la entrada correspondiente al contacto cuyo nombre y apellido se
especifican en los argumentos y, si lo encuentra, lo devolverá como resultado; pero si no lo
encuentra, devuelve 0. Se deberá tener cuidado con las diferencias entre mayúsculas y
minúsculas.

Para ver en la pantalla el contenido de la agenda se utilizará la función
void listar_agenda(const Tagenda& ag);
que listará cada una de las entradas de la agenda ag en una línea de la pantalla.


He rehecho el ejercicio varias veces, cuando ejecuto el programa me dice que dejó de funcionar.
#6
Programación C/C++ / Duda sobre registros en C++
6 Septiembre 2015, 23:28 PM
Hola a todos, estoy haciendo un ejercicio en el que se me pide hacer una agenda con el nombre, apellidos y número de cada contacto.

En una parte del enunciado se me dice lo siguiente:"
void leer_contacto(Tentrada& ent),
que se encargará de pedir y leer, de la consola, los datos de un contacto, pasar nombre y apellido a mayúsculas, y rellenar con ellos los campos de la entrada ent que recibe como argumento."


No entiendo bien a qué se refiere con " pedir y leer, de la consola".
¿Dónde están esos datos que tengo que pedir y leer?¿Están ya en la entrada o tiene que meterlos el usuario?

Si me está dando en el argumento de la función acceso al registro (Tentrada& ent) y las declaraciones son las siguientes, cómo accedo  a los campos del array entradas para discernir entre cada entrada con sus respectivos contactos?

Código (cpp) [Seleccionar]
struct Tentrada {
string nombre;
string apellido;
long numero;
};

struct Tagenda {
Tentrada entradas [DIM];
Unsigned numEntradas;
};




Gracias.
#7
En el ejercicio se me pide calcular Vo en función de los parámetros del circuito.



La verdad es que he intentado varias cosas, el teorema de superposición, representar el modelo circuital con fuentes de tensión dependientes, por tensiones nodales... pero no me aclaro con las 3 resistencias a la izquierda del nodo 1.

Os cuento lo que he razonado:

En el NODO 1 hay Vg2/2 porque lo que tenemos a la patilla positiva del A.O. es un divisor de tensión y por cortocircuito virtual, cómo las tensiones entre terminal positivo y negativo son iguales y las corrientes que circulan son 0, Vp=Vg2/2 =Vn que es la tensión en el NODO 1
En el NODO 2 tenemos Vg1/4, ya que tenemos otro divisor de tensión.
En el NODO 3 observamos que tenemos inmediatamente Vg2.

Ahora empiezo con analizando el AO con los datos que he obtenido.

(Vo-Vi)/2R = (V1-V2)/R + (V1-Vg2)/R

Tengo algún razonamiento erróneo?

Gracias
#8
Buenas a todos, aquí sigo, peleando con las cadenas de caracteres.
Veréis, se me plantea el siguiente ejercicio: (no puedo usar ninguna función predefinida que haga el trabajo de cadena_a_int)

Código (cpp) [Seleccionar]
/*15) Función para producir el valor numérico correspondiente a una cadena de dígitos; p.e.
para la cadena "-234" debe producir el número -234. La función comprobará si todos los
caracteres son dígitos y devolverá el parámetro ok a true o false según haya podido
producir el valor o no.
void cadena_a_int(const TCadena cad, int& num, bool& ok)*/


Pero el programa que he escrito no me funciona, no se por qué, agrego al código explicando algunas cosillas con comentarios a ver si veis lo que pasa.

Código (cpp) [Seleccionar]
#include <iostream>
#include <cmath>
using namespace std;

typedef char TCadena[];

//---------------------------

void cadena_a_int(const TCadena cad, int& num, bool& ok);

int  longitud (const TCadena cad);

//---------------------------

int main (){
   int num=0;
   char cad[]={99};
   bool ok;
   cadena_a_int(cad, num, ok);
   cout<<num;

   return 0;
}

//---------------------------

void cadena_a_int(const TCadena cad, int& num, bool& ok){
   int  pos=longitud(cad)-1;
   int i=0;
   ok=true;
   bool error=false;           //CONTROLA MAS ADELANTE QUE SE ENCUENTRE ALGUN CARACTER QUE NO SEA NUMERO
   bool negativo=false;           //CONTROLA MAS ADELANTE QUE SI HEMOS ENCONTRADO EN PRIMER LUGAR UN '-' SE MULTIPLIQUE NUM*-1
   if(cad[0]=='-') negativo=true;           //CONTROL PARA NUMEROS NEGATIVOS
   while(cad[pos]>=0 && !error){           //MIENTRAS LA POSICION ES MAYOR O IGUAL QUE 0 Y NO HAY ERROR
       if(cad[pos]>=0 && cad[pos]<=9){           //SI LO QUE TENEMOS ES UN NUMERO, ENTONCES NUM+X*10^i= NUM
           num+=cad[pos]*pow(10,i);
           cout<<cad[pos];           //ESTOY COMPROBANDO SI SE EJECUTA EL BUCLE... POR LO VISTO NO SE EJECUTA...
           ++i;
       }else{
       error=true;
       ok=false;
       }//end else
       --pos;
   }//end while

   if(negativo) num*-1;          // PARA NUMEROS NEGATIVOS, NUM*-1
}

int longitud (const TCadena cad){
   int l=0;
   while(cad[l]!='\0') ++l;
   return l;
}
#9
Buenas a todos, tengo una duda.

Si tengo las dimensiones de una cadena de caracteres...

Código (cpp) [Seleccionar]

char cadena1[80]


... e introduzco por ejemplo en cadena1: "El pajaro vuela", el caracter nulo "\0" estaría inmediatamente después de vuela\0 o estaría en la posición 80 de cadena1 por haber definido su tamaño previamente?

PD: Es que en un ejericio me salen datos basura... no se qué estoy haciendo mal.
Os dejo el código. El main ya venía hecho.

Código (cpp) [Seleccionar]
#include <iostream>
using namespace std;

typedef char TCadena [];

// Funciones para modificar cadenas de caracteres ----------------------

unsigned longitud (const TCadena cad);

void copiar(TCadena destino, const unsigned dim, const TCadena origen,
                                                              bool& ok);
// Copia los caracteres de la cadena origen en la cadena destino de
// tamañoo dim. Devuelve false en ok si no tiene capacidad suficiente

void agregar_char(TCadena destino, const unsigned dim, const char c,
                                                           bool& ok);
// Agrega el carácter c al final de la cadena destino.
// Devuelve ok a false cuando no tiene capacidad suficiente

void encadenar(TCadena destino, const unsigned dim,
                                 const TCadena origen, bool& ok);
// Agrega todos los caracteres de la cadena origen al final de la cadena
// destino. Devuelve ok a false cuando no tiene capacidad suficiente


//- Programa de prueba -------------------------------------------------

int main(){
    setlocale(LC_ALL, "spanish");

    char cadena1[80], cadena2[80];
    char c;
    bool ok;

    cout << "Introducir una cadena:\n";
    cin >> ws;
    cin.getline(cadena1,79);

    cout << "Introducir un carácter: ";
    cin >> c;
    agregar_char(cadena1, 80, c, ok);
    if(ok){
      cout << "Al agregarle el carácter la cadena queda:\n";
      cout << cadena1 << endl;
    } else {
      cout << "No hay espacio para agregar un carácter\n";
    }

    copiar(cadena2, 80, cadena1, ok);
    if (ok){
          cout << "La cadena copiada es: \n";
          cout << cadena2 << endl;
    } else {
          cout << "No hay espacio para la copia" << endl;
    }

    cout << "Pegando las dos cadenas resulta: \n";
    encadenar(cadena2, 80, cadena1, ok);
    if (ok){
          cout << cadena2 << endl << endl;
    } else {
          cout << "No hay espacio para encadenar" << endl;
    }

    cout<<longitud(cadena2);
    return 0;
}

//- Definiciones de funciones ------------------------------------------

unsigned longitud (const TCadena cad){
    unsigned pos=0;
    while (cad[pos]!='\0') ++pos;
    return pos;
}


void copiar(TCadena destino, const unsigned dim, const TCadena origen, bool& ok){
    if(longitud(origen)<=dim){
        ok=true;
        unsigned i=0;
        while(origen[i]!='\0'){
            destino[i]=origen[i];
            ++i;
        }//end while
    }else ok=false;
}

void agregar_char(TCadena destino, const unsigned dim, const char c, bool& ok){
        if(longitud(destino)<dim){
            destino[longitud(destino)]=c;
             ok=true;
        }else ok=false;
}

void encadenar(TCadena destino, const unsigned dim, const TCadena origen, bool& ok){
    if(longitud(origen)>dim-longitud(destino)){
        unsigned i=longitud(destino)+1;
        unsigned pos=0;
        while(origen[pos]!='\0'){
            destino[i]=origen[pos];
            ++i;
        }//end while
        ok=true;
    }else ok=false;
}


#10
Hola a todos. Esta vez traigo una duda con ejercicios de cadenas de caracteres.
Tengo que hacer una función que compare 2 cadenas ignorando las mayúsculas y minúsculas y me devuelva si son o no iguales.

Había pensado en hacerme una función "void aMayuscula (TCadena cad)" que convirtiera toda la cadena a mayuscula para implementarla en otra función y comparar las 2 cadenas pasadas a mayúscula. Pero para hacer esto tendría o que crear una cadena nueva copiando el contenido de la original  ya en mayúscula o sobrescribir la original, cosa que no puedo porque en la pLantilla que me dan me pasan las cadenas como "const"
Lo que he hecho al final es una función "char aMayuscula (TCadena cad, unsigned pos)" que va dentro de un while que recorre las 2 cadenas y compara una a una las letras devueltas por la función "char aMayuscula".

Código (cpp) [Seleccionar]

char aMayuscula(TCadena cad, unsigned pos){
    char a;
    if(cad[pos]!='\0'){
        if(cad[pos]>='a' and cad[pos]<='z'){
            a=cad[pos]-32;
        }//end if
    }//end if
    return a;
}


A continuación, la función que compara las cadenas:

Código (cpp) [Seleccionar]

bool iguales_ignorando_tipo(const TCadena cad1, const TCadena cad2){
    unsigned i=0;
    bool es=true;
    while(es && cad1[i]!='\0'&& cad2[i]!='\0' ){
        if(aMayuscula(cad1,i)!=aMayuscula(cad2,i)) es=false;
        ++i;
    }
    return es;
}



Al compilar me da error "invalid conversion from 'const char*' to 'char*'" Y no entiendo por qué sale.


¿Qué tengo mal?
#11
Buenas a todos otra vez, sigo atascado con este problema.

12) Diseñar un programa que genere y muestre en la pantalla ordenados los 100 primeros
números de un conjunto M definido de la siguiente forma:
i. 1 pertenece a M.
ii. Si x pertenece a M, entonces 2*x+1 y 3*x+1 también pertenecen a M.
iii. Ningún otro número pertenece a M.
El programa deberá producir una salida por pantalla de la forma:
M = {1, 3, 4, 7, 9, 10, ... }*/


La cosa es que empieza a generarme el conjunto bien (al menos los primeros números, los demás no he tenido manera de comprobarlos), pero derrepente salen valores desorbitados, como si en alguna parte del proceso hubiera datos basura que estuvieran estropeando el proceso, y no lo veo.

Os dejo el código:

Código (cpp) [Seleccionar]

#include <iostream>
using namespace std;

typedef long int Tarray [100];

void generarConjunto(Tarray ar);

bool esta(Tarray ar, int long n, unsigned pos);

void ordenar(Tarray ar);

void mostrar(Tarray ar);

//---------------------------

int main(){
   Tarray ar;
   generarConjunto(ar);
   cout<<"-----------------------------------"<<endl;
   ordenar(ar);
   mostrar(ar);


   return 0;
}

//---------------------------

void generarConjunto(Tarray ar){ //EL FALLO CREO QUE LO DA ESTA FUNCION,  QUE ES LA QUE GENERA LOS VALORES DEL CONJUNTO
   unsigned valor=0;
   ar[valor]=1;
   long int x=ar[valor];
   for(unsigned pos=1; pos<100; pos++){
       if(!esta(ar, 2*x+1, pos)){
           ar[pos]=2*x+1;
           cout<<ar[pos]<<endl;
       } //end if
       ++pos;
       if(!esta(ar, 3*x+1, pos)){
           ar[pos]=3*x+1;
           cout<<ar[pos]<<endl;
       }//end if
       ++valor;
       x=ar[valor];
   }//end for
}

bool esta(Tarray ar, int long n, unsigned pos){
   unsigned i=0;
   bool e =false;
   while(!e and i<pos){
       if(ar[i]==n) e=true;
       ++i;
   }//end while
   return e;
}

void ordenar(Tarray ar){
   int long aux=0;
   unsigned comp=0;
   do{
       for(unsigned pos=0; pos<99; pos++){
           if(ar[pos]>ar[pos+1]){
               aux=ar[pos];
               ar[pos]=ar[pos+1];
               ar[pos+1]=aux;
           }//end if
       }//end for
   ++comp;
   }while(comp<=1000); //podria sustituir esto por una funcion auxiliar que dijera si el array esta ordenado o no.
}

void mostrar(Tarray ar){
   for(unsigned pos=0; pos<100; ++pos){
       cout<<"->"<<ar[pos]<<endl;
   }//end for
}

#12
Programación C/C++ / Duda con los array C++
8 Agosto 2015, 11:37 AM
Buenas, tengo varias dudas manejando arrays, sobre todo al llamarlos en las cabeceras de las funciones o al inicializarlos.
Además, no se cuándo debo usar un array abierto o definir su tamaño.

A continuación dejo parte de un ejercicio en el que me da error ( storage size of 'ar' isn't known|)

Código (csharp) [Seleccionar]

typedef int Tarray [];

void generarConjunto(Tarray ar);  //esta función genera los 100 primeros nºs de un conjunto y los mete en un array.
                                       //Por lo que no se si debería haber definido la dimensión de Tarray como [100]


//-----------------

int main(){
   Tarray ar;  //¿Cuándo pongo los corchetes? En caso de tener que ponerlos,
                  //¿debo definir su tamaño, o el tamaño viene dado al inicializar el tipo Tarray?
                 //He probado a poner corchetes con y sin dimensión y me sale " declaration of 'ar' as multidimensional array must have bounds for all dimensions except the first"

   generarConjunto(ar);

   return 0;
}


Dejo el enunciado del ejercicio, por si os facilita algo:

12) Diseñar un programa que genere y muestre en la pantalla ordenados los 100 primeros
números de un conjunto M definido de la siguiente forma:
i. 1 pertenece a M.
ii. Si x pertenece a M, entonces 2*x+1 y 3*x+1 también pertenecen a M.
iii. Ningún otro número pertenece a M.
El programa deberá producir una salida por pantalla de la forma:
M = {1, 3, 4, 7, 9, 10, ... }*/



Gracias. Siento ser tan repetido en el foro haciendo todo tipo de preguntas.
#13
Buenas, estoy haciendo ejercicios de array. He terminado uno y funciona correctamente pero creo que he hecho bastantes chapuzas en el código y me gustaría que lo vierais para pulirlo un poco.

Gracias.

Código (cpp) [Seleccionar]

/*
11) Diseñar un programa en C++ para determinar la disponibilidad de una serie de personas
para reunirse algún día de un cierto mes. Para esto, el programa deberá preguntar el
número de días del mes (28, 29, 20 0 31) y el número de personas que deben reunirse; con
estos datos, pedirá, una a una, a cada persona cuáles son los días (de 1 al número de días
del mes) que tiene disponibles y con ayuda de un único array deberá presentar en
pantalla los días disponibles en que coinciden todas las personas.*/

#include <iostream>
using namespace std;

typedef int  Tarray [];

void eliminarDia (int noPuede,int  dias, Tarray ar);

void siPuede (Tarray ar);


int main(){
   Tarray ar={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31};
   int dias=0, personas=0, noPuede=0;
   do{
       cout<<"Introduzca el numero de dias del mes: ";
       cin>>dias;
   }while(dias<28 or dias>31);

   if(dias==28){
       ar[30]=0;
       ar[29]=0;
       ar[28]=0;
   }
   else if (dias==29){
       ar[30]=0;
       ar[29]=0;
   }
   else if(dias==30){
       ar[30]=0;
   }
   else;
   cout<<"Cuantas personas desea que se reunan?: ";
   cin>>personas;

   for(unsigned contador=1; contador<=personas; contador++){
       while(noPuede!=-1){ //Para pasar a la siguiente persona
           cout<<"Persona "<<contador<<" ,dia que no puede reunirse: ";
           cin>>noPuede;
           eliminarDia(noPuede, dias, ar);
       }
       noPuede=0;
   }
   siPuede(ar);
   return 0;
}


void eliminarDia (int noPuede,int  dias, Tarray ar){
   if(noPuede!=-1){
       for(unsigned i=0; i<dias; i++){
           if(ar[i]==noPuede) ar[i]=0;
       }
   }
}

void siPuede (Tarray ar){
   cout<<"Todos pueden: "<<endl;
   for(unsigned i=0; i<31; i++){
       if(ar[i]!=0) cout<<ar[i]<<endl;
   }
}

#14
Buenas, quiero invertir un array de manera que la posicion vec[0] sea la vec[dim], vec[1] sea vec[dim-1], etc. Pensaba que no iba a ser un problema pero al parecer no me funciona. Echadle un vistazo por favor.

Código (cpp) [Seleccionar]

void invertir(Tvector vec, unsigned dim){
    for(unsigned i=0; i<dim; ++i){
        vec[i]=vec[dim-i];
    }
}


Gracias.
#15
Buenas, son varios ejercicios, aquí os dejo los enunciados.

12) Teniendo en cuenta que el calendario gregoriano está vigente desde 1583 y que, según
este calendario, son bisiestos los años divisibles por 4, salvo los años seculares (los
divisibles por 100) que además deben ser divisibles por 400 para que sean bisiestos,
defínanse las funciones siguientes: bool esBisiesto(int anno), que determina si un
año del calendario gregoriano es bisiesto o no; int ultimoDeMes(int mes, int anno),
que calcula el último día de cada mes, teniendo en cuenta el año y bool
fechaCorrecta(int dia,int mes,int anno), que determina si los valores de sus
argumentos corresponden a una fecha correcta o no en el calendario gregoriano.
13) Continuando con el ejercicio anterior, defínanse también las funciones void
avanzar(int& d, int& m, int& a), que avanza un día la fecha del argumento y void
retroceder(int& d, int& m, int& a), que retrocede un día la fecha del argumento.
14) Defínanse las funciones: bool esAnterior(int d1,int m1,int a1,int d2,int
m2,int a2), que determina si la fecha d1/m1/a1 es anterior o no a la fecha d2/m2/a2, y
int diferencia(int d1,int m1,int a1,int d2,int m2,int a2), que calcula el
número de días que debe avanzar (resultado positivo) o retroceder (resultado negativo) la
fecha d1/m1/a1 hasta alcanzar la fecha d2/m2/a2.
15) Agrúpense las funciones de los tres ejercicios anteriores en un programa repetitivo que
pida una fecha del teclado, compruebe si es correcta, y ofrezca una serie de opciones para
avanzar o retroceder la fecha, para comparar con otra fecha, que se pedirá del teclado, o
para calcular la diferencia de días con otra fecha que también se deberá leer del teclado.



Me funciona todo excepto calcular la diferencia de días entre 2 fechas y la verdad tengo la cabeza saturada, ya he descubierto unos cuantos fallos que he arreglado, pero aun así sigue sin darme la diferencia correcta. Concretamente el error suceda si introduzco meses o años diferentes.

Código (cpp) [Seleccionar]

#include <iostream>
using namespace std;

bool esbisiesto(int anno);

int ultimodelmes (int mes, int anno);

bool fechacorrecta(int dia, int mes, int anno);

void avanzar(int& d, int& m, int& a);

void retroceder(int& d, int& m, int& a);

bool esAnterior(int d1,int m1,int a1,int d2,int m2,int a2);

int diferencia(int d1,int m1,int a1,int d2,int m2,int a2);

int mesAdias (int mes, int anno);

int annoAdias (int anno);


//-------------------

int main(){
   int dia, mes, anno;
   int dia2, mes2, anno2;
   do{
       cout<<"Introduce una fecha para saber si es correcta (dia, mes, año): "<<endl;
       cout<<"Dia: ";
       cin>>dia;
       cout<<"Mes: ";
       cin>>mes;
       cout<<"año: ";
       cin>>anno;
       if (fechacorrecta(dia, mes, anno)) cout<<"Ha introducido una fecha correcta."<<endl;
       else cout<<"Fecha incorrecta."<<endl;
   }while(!fechacorrecta(dia, mes, anno));

   int menu=999;
   while(menu!=0){
       cout<<endl
           <<"###########################################################"<<endl
           <<"1.Avanzar un dia la fecha."<<endl
           <<"2.Retroceder un dia la fecha."<<endl
           <<"3.Comparar fecha introducida con otra a introducir."<<endl
           <<"4.Calcular la diferencia en dias de la fechas introducidas."<<endl
           <<"0.Salir"<<endl
           <<"-----------------------------------------------------------"<<endl
           <<endl;

       cout<<"Introduzca una opcion valida: ";
       cin>>menu;

       switch (menu){

           case 0:
           break;

           case 1:
               avanzar(dia, mes, anno);
               cout<<dia<<"/"<<mes<<"/"<<anno<<endl;
           break;

           case 2:
               retroceder(dia, mes, anno);
               cout<<dia<<"/"<<mes<<"/"<<anno<<endl;
           break;

           case 3:
               do{
                   cout<<"Introduce otra fecha para comparar: "<<endl;
                   cout<<"Dia: ";
                   cin>>dia2;
                   cout<<"Mes: ";
                   cin>>mes2;
                   cout<<"año: ";
                   cin>>anno2;
               }while(!fechacorrecta(dia2, mes2, anno2));

               if(esAnterior(dia, mes, anno, dia2, mes2, anno2)) cout<<dia<<"/"<<mes<<"/"<<anno<<" es anterior a "<<dia2<<"/"<<mes2<<"/"<<anno2<<endl;
               else cout<<dia<<"/"<<mes<<"/"<<anno<<" NO ES anterior a "<<dia2<<"/"<<mes2<<"/"<<anno2<<endl;
           break;

           case 4:
               do{
                   cout<<"Introduce otra fecha para comparar: "<<endl;
                   cout<<"Dia: ";
                   cin>>dia2;
                   cout<<"Mes: ";
                   cin>>mes2;
                   cout<<"año: ";
                   cin>>anno2;
               }while(!fechacorrecta(dia2, mes2, anno2));

               cout<<diferencia(dia, mes, anno, dia2, mes2, anno2);
           break;




           }


   }
return 0;
}

//-------------------

bool esbisiesto(int anno){
  if(anno>1583){
       if(anno%4==0){
           if((anno%100==0) and (anno%400==0)){
               return true;
           }else  return true;


       }else return false;

   }else return false;
}

int ultimodelmes (int mes, int anno){
   if (mes==2){
       if(esbisiesto(anno)) return 29;
       else return 28;
   }else if (mes!=2 and mes%2==0) return 30;
   else return 31;
}

bool fechacorrecta(int dia, int mes, int anno){
   if(dia>31 or mes>12 or anno<1583){
       return false;
   }else{
       if(dia>ultimodelmes(mes, anno)) return false;
       else return true;
   }
}

void avanzar(int& d, int& m, int& a){
   ++d;
   if(d>ultimodelmes(m,a)) ++m;
   if(m>12){
       ++a;
       m=1;
       d=1;
   }

}

void retroceder(int& d, int& m, int& a){
   --d;
   if(d<1){
       if(m>1){
           --m;
           d=ultimodelmes(m, a);
       }else{
           m=12;
           --a;
           d=ultimodelmes(m, a);
       }
   }
}

bool esAnterior(int d1,int m1,int a1,int d2,int m2,int a2){
   if(a1>a2) return false;
   else if (a1<a2) return true;
   else{
       if(m1>m2) return false;
       else if(m1<m2) return true;
       else {
           if(d1>d2) return false;
           else if(d1<d2) return true;
           else cout<<"LAS DOS FECHAS SON LA MISMA"<<endl;
       }
   }
}

int mesAdias(int mes, int anno){
   int dias=0;
   for(unsigned contador=1; contador<=mes; contador++){
       if(mes%2==0){
           if(mes==2){
               if(esbisiesto(anno))dias+=29;
               else dias+=28;
           }else dias+=30;
       }else dias+=31;
   }
   return dias;
}

int annoAdias(int anno){
   int dias=0;
   for(unsigned contador=1; contador<= anno; contador++){
       if(esbisiesto(anno)) dias+=366;
       else dias+=365;
   }
   return dias;
}

int diferencia(int d1,int m1,int a1,int d2,int m2,int a2){
   int suma1=0, suma2=0;
   suma1=d1+mesAdias(m1, a1)+annoAdias(a1);
   suma2=d2+mesAdias(m2, a2)+annoAdias(a2);
   if (suma1<=suma2) return suma2-suma1;
   else return suma1-suma2;
}



#16
Buenas, aquí sigo con programación I. Tengo que hacer un ejercicio en el que hay que introducir un número n, par, en el teclado y descomponerlo en la suma de 2 números primos.
Lo único que puedo manejar son bucles y crear subprogramas.

Código (cpp) [Seleccionar]
/*
8) Defínase una función sin resultado factorizar(n) que calcule los factores primos de su
argumento n para números mayores o iguales que 2 y los escriba en la pantalla. Defínase
también otra función sin resultado sumaDePrimos(n) que descomponga un número n par
y mayor que 2 en suma de dos números primos y los presente en pantalla. (Según la
conjetura de Goldbach, todo número par mayor que 2 siempre se puede descomponer en
suma de dos números primos).
*/

#include <iostream>
using namespace std;

void factorizar(int n){
   for(unsigned a=3; a<n; a++){
       if(n%a==0) cout<<a<<endl;
   }

}

//--------------------------------------------------------------

void sumadeprimos(int n){   //ESTO ES LO QUE TENGO MAL, HABIA PENSADO QUE SE FUERA COMPROBANDO
                                  // LA SUMA DE DOS PRIMOS HASTA QUE FUERA IGUAL A "n" PERO O SE PASA DE "n" O NO LLEGA
   int suma=0;
   if(n%2==0){  //si n es par
       int contador=0;

       while(suma<n){ //bucle que controla la suma y se tendría que ejecutar hasta que se cumpliera la conjetura de Goldbach
           int a=3;

           while(contador<2 and a<n){  //bucle en el que se va haciendo la suma de primos. "contador" se reinicia cada 2 ciclos
               if(n%a==0){
                   suma+=a;
                   ++contador;
                       cout<<suma<<endl;
               }
               ++a;
           }
           contador=0;
       }
   }
   cout<<suma<<endl;
}
   
//------------------------------------------------------------------- 

int main(){
   int n;
   cout<<"n = ";
   cin>>n;
   cout<<"Factores primos de n: "<<endl;
   factorizar(n);
   cout<<endl;
   cout<<"Descomposicion en la suma de 2 factores primos de n par "<<endl;
   sumadeprimos(n);



return 0;
}
#17
Buenas, soy estudiante de Ingeniería de primer año. Si, estoy estudiando en verano para recuperar Programación.

La duda es que tengo un problema en el que una de las cosas que se me pide es calcular una raiz cuadrada sin usar sqrt.

Este es mi codigo, estaba comprobando lo que pasaba dentro del bucle while, ya que en la ejecución le de el valor que le de a num cae siempre en bucle infinito de ceros.
Mi idea era que el bucle se ejecutase mientras num-res>=0,0001 (res= resultado de la raiz cuadrada aproximandonos por tanteo) y que por tanto, saliera del bucle cuando tuviera un res valido aproximado al valor real de la raiz cuadrada de num.


int main(){
   int num;
   double res=0.000;
   cin>>num;

   while((num-res)>=0,001){
       res+=0,001;
       cout<<res<<endl;
}


return 0;
}


#18
Dudas Generales / Me compadro un laptop y....
30 Junio 2011, 09:46 AM
Hola resulta que me e comprado un laptop Acer Aspire 5742g, me gustaria saber si tiene los 2 nucleos activados o solo uno y si esta funcionando o no el  Hyper-Threading. En caso de que no este funcionando como lo activo?

He entreado en la Bios pero no veo nada de Threading.

Otra cosa es que el PC noto que usa mucha CPU, sube de 4-12 y solo estoy usando google chrome, y cuando estoy instalando World of Warcraft por ejemplo esta por 50 %  incluso a llegado a 65-80% es esto normal? esta en modo EQUILIBRADO


GRACIAS, PORFAVOR CONTESTEN TODAS MIS PREGUNTAS
#19
Hardware / Que Portatil me recomiendan?
21 Mayo 2011, 20:32 PM
Hola, estaba buscando un poratil "bueno, bonito y barato" , necesito que me digan cual de estos es mejor para quedarme con el

Estan en esta pagina :  http://www.elcorteingles.es/tienda/informatica/browse/subcategory.jsp?trail=9004:999.087:63022:250.00-500.00&brandId=&start=1&categoryId=999.087&question=&featureId=&addFacet=63022%3A250.00-500.00&trailSize=1&mode=&removeFacet=63022%3A250.00-500.00&selectedSortBy=-numSales&contentGroup=&elementoId=&selectedHowMany=10&groupName=&search=

Cual me recomiendan? el uso que le daría seria multimedia y entretenimiento, algunos juegos como Wow, editor de Sonido y video, navegacion, y me interesa que le dure la bateria contra mas mejor


Gracias, espero la respuesta ;)
#20
Dudas Generales / Problemas con Micro SD
14 Febrero 2011, 20:24 PM
Hola, resulta que tengo una Micro SD de 8 GB clase 2.
Siempre me a ido bien, pero resulta que ayer cuando fuí a formatearla con el PC (windows 7) el formateo se realizo sin ningun problema, se la volví a poner a mi smarthphone y para mi sorpresa, seguian los mismo archivos que antes de formatearla...

E provado a borrar la particion, renombrarla, formatearla, cabiar el formato... pero nada, cuando le doy a borrar los archivos desaparecen de la pantalla, como si se borraran, pero cuando la vuelvo a conectar HAY ESTAN OTRA VEZ.


Ayuda porfavor, no se que hacer
#21
Hola, resulta que tengo una gráfica Ati Radeon HD 3600, y cuando juego a wow va a 60 FPS, pero se congela el juego, se queda PARADA INDEFINIDAMENTE LA IMAGEN.

¿Por que pasa esto?, tengo los ultimos drivers y e instalado el Wow en un Netbook practicamente malisimo y va mejor que en este equipo ( 3,2 GHZ, 2GB de RAM, Windows 7).

Tengo otro equipo con una grafica peor (Nvidia Geforce 8400 gs) y no se me congela la imagen.


AYUDA PORFAVOR
#22
Dudas Generales / Teclado desactivado (ayuda)
6 Enero 2011, 21:44 PM
Hola, resulta que estaba toqueteando por la BIOS de mi PC para arrancar un CD, creo que e tocado alguna opción y cuando e iniciado el teclado no funciona.
-Cuando enciendes la torre, parpadea 1 vez el teclado, le doy a BLOQ NUM y no se enciende ninguna luz, y con BLQ MAYUS tampoco.
No puedo iniciar sesión por que necesito meter mi contraseña, y creo que tampoco en la BIOS para restaurar la configuración del teclado, por que al NO FUNCIONAR EL TECLADO, no puedo darle a SUPR para acceder a la BIOS.


AYUDA PORFAVOR !!!!

ES URGENTE!!!
#23
Hola tengo una tarjeta grafica Nvidia Geforce 8400 Gs, me gustaria overclockearla, todo lo que se puede, hasta el punto de lo "estable"

Que tengo que hacer, y  que programar uso?

tengo Windows 7 Profesional


Espero su respuesta, es urgente
#24
Hardware / Nueva duda sobre tarjeta grafica
10 Octubre 2010, 21:56 PM
Hola resolta que hace poco me compre una grafica nueva es una PCI ASUS 512 MGDDR2 EN8400GS.

Alcanza unas temperaturas de 49 -53ºC en un uso normal
y 59-63ºC jugando a world of warcraft

Me gustaria saber si son muy elevadas estas temperaturas o son normales en esta grafica, o poder bajarlas un poco

Si les sirve de ayuda, la grafica tiene un pequeño ventilador xD



Espero que me ayuden pronto


GRACIAS
#25
Hola, resulta que me voy a comprar una tarjeta grafica

VGA PCIE GF 8400GS 512MB ZOTAC

Model ZT-84MEH4M-HSL
Highlights ZOTAC ZT-84MET4M-HSL Video Card.
GPU: GeForce 8400 GS.
Core Clock: 567MHz.
Memory Size: 512MB.
Memory Interface: 64-bit.
Memory Type: DDR2.
Interface: PCI Express 2.0 x16.
Interface
Interface PCI Express 2.0 x16
Chipset
Chipset Manufacturer NVIDIA
GPU GeForce 8400 GS
Core clock 567MHz
Stream Processors 8
Shader Clock 1400 MHz
Memory
Memory Clock 667MHz
Memory Size 512MB
Memory Interface 64-bit
Memory Type DDR2
3D API
DirectX DirectX 10
OpenGL OpenGL 3.2
Ports
DVI 1
HDMI 1
VGA 1
General
RAMDAC 400 MHz
Max Resolution VGA (Up to 2048x1536)
Dual-link DVI (Up to 2560x1600)
SLI Support No
System Requirements Power requirements:
- 300-watt power supply recommended
- 17-watt max power consumption
Dual-Link DVI Supported Yes
Windows Vista Works with Windows Vista
HDCP Ready Yes
Card Dimensions Height: 2.712in - 68.91mm
Width: 6.600in - 167.64mm
Warranty Limited Lifetime



Me gustaria saber si funciona World OF Warcraft en ella, y si es compatible con Windows 7.
#26
Hardware / Que Grafica me recomendais?
19 Septiembre 2010, 17:12 PM
Hola

Bueno lo primero es preguntar si en mi PC  se puede poner cualquier tipo de Tarjeta Grafica que sea compatible y funcione bien


2º Cual de estas me recomendais?

VGA PCIE GF 8400GS 512 (LP) ASUS




EN8400GS/P/512M/A(LP)
GF8400GS,DVI,HDCP,512M
P/N:90-C1CNB5-J0UAN0KZ

Fabricante Chip: nVidia
Chip Grafico: GeForce 8 8400GT
Memoria RAM: 512MB DDR2
PCI Express: x16 (2.0)
Interface de memoria: 64 bit
Nucleo grafico (Core): 567 MHz
Reloj efectivo de memoria: 800 MHz
Shader: 4.0
DirectX: 10
Conectores salida: VGA / DVI
Ventilador: SI
Alimentacion: no

Garantia:
Duración: 2 años
Tipo: directa
TLF:

CRT Max. Resolution 2048x1536

XFX HD 4550 512MB DDR2 HDMI DVI VGA

HD-455X-YNH2

HD 4550 600M 512MB FB DDR2 HDMI DVI VGA
Low Profile - Passive Heatsink


Memory: 512MB DDR2

Core Clock: 600Mhz

Mem Clock: 1.0 GHZ

Stream Processors: 80

Cooling: Heatsink

HDMI, VGA, DVI
Dual link Single

GIGABYTE 8400GS 512MB HDMI

GV-N84S-512I(rev. 1.3)
GeForce 8400GS / PCI-E 2.0 x16

Gráfica con HDMI a precio competitivo.
PErfil bajo, con chapita ya incluida.


Equipada con la GPU GeForce 8400 GS
Soporta PCI Express 2.0
Microsoft DirectX 10 and OpenGL 2.1 support
Integrated with industry's best 512 MB GDDR2 memory and 64-bit memory interface
Supports PureVideo HD technology
Features Dual link DVI-I / D-sub / HDMI with HDCP protection

Especificaciones
Chipset NVIDIA GeForce 8400GS
Frecuencia del Core 450 MHz
Frecuencia de la Memoria 800 MHz
Memoria 512MB
Bus de Memoria 64 bit
Tipo de Memoria GDDR2
Tamaño de la tarjeta ATX
Tipo de Bus PCI-E 2.0
Velocidad de Bus x16
D-SUB Sí
TV-OUT No
Puerto DVI Yes
VIVO No
Multi View Sí
Shader Clock 1125 MHz
Maximum Digital Resolution 2560x1600
Maximum VGA Resolution 2048x1536

GIGABYTE 8400GS 512M GDDR2 64BIT PCIE 2.0 DVI VGA HDMI LOW PROFILE

Equipada con la GPU GeForce 8400 GS

Soporta PCI Express 2.0

Microsoft DirectX 10 and OpenGL 2.1 support

Integrada con la mejor memoria 512M GDDR2 del mercado y 64Bit.

Permite PureVideo HD technology

Features Dual link DVI-I / D-sub / HDMI with HDCP protection


Chipset NVIDIA GeForce 8400GS

Frecuencia del Core 450 MHz

Frecuencia de la Memoria 800 MHz

Memoria 512MB

Bus de Memoria 64 bit

Tipo de Memoria GDDR2

Tamaño de la tarjeta ATX

Tipo de Bus PCI-E 2.0

Velocidad de Bus x16

D-SUB Sí

TV-OUT No

Puerto DVI Yes

VIVO No

Multi View Sí

Shader Clock 1125 MHz

Maximum Digital Resolution 2560x1600

Maximum VGA Resolution 2048x1536

ASUS 8400GS 512M DDR2 64BITS PCIE 2.0 SILENT


PART NUMBER : 90-C1CKD0-J0UAY1KZ



CONECTIVIDAD
Cantidad de puertos DVI-I: 1
Cantidad de puertos VGA (D-Sub): 1
Puerto DVI: 1
Tipo de interfaz: PCI Express 2.0

DETALLES TéCNICOS
Cooling type: passive
HDCP: Y
Source data-sheet: ICEcat.biz

EXHIBICIóN
Máxima resolución: 2048 x 1536 Pixeles

MEMORIA
Adaptador de memoria gráfica: 512 MB
Ancho de datos: 64 Bit
Tipo de memoria de adaptador gráfico: DDR2-SDRAM
Velocidad de memoria del reloj: 800 MHz

PROCESADOR
Adaptador gráfico, RAMDAC: 400 MHz
Procesador gráfico: NVIDIA GeForce 8400GS
Velocidad de reloj: 567 MHz

REQUISITOS DEL SISTEMA
Mac, compatible: N

VíDEO
Versión DirectX : 10.0
Versión OpenGL: 2.0
Versión Shader model: 4.0

VGA AGP GF 6200A 256MB POINTOFVIEW

Fabricante chip: nVidia
Chip Grafico: GEFORCE 6200 GPU
Memoria RAM: 256MB GDDR2
AGP: x8
Interface de memoria: 64 bit
Nucleo grafico (Core): 350 Mhz
Reloj efectivo de memoria: 800 Mhz
Pipelines: 4

Conectores : VGA/ DVI-I / V-Video
Ventilador: no


Garantía
Duración: 2 años
Tipo: directa
TLF:











ESPERO QUE ME RECOMENDEIS LA MEJOR DE ESAS xD,  Y QUE SEA COMPATIBLE, SI NECESITAIS DATOS DE MI PC PEDIDLOS

SI ME RECOMENDAIS OTRA QUE ESTE BIEN QUE NO SOBRE PASE LOS 40 EUROS






#27
Hola, me gustaria saber como puedo activar la tarjeta Grafica interna de mi PC, ya que tengo problemas con una NVIDIA GEFORCE 7600 GS y la tengo deshabilitada.


Me gustaria tener una tarjeta grafica interna activada y habilitada , pero no se como.


Si os sirve el algo

Procesador: Intel Core Duo




Gracias
#28
Hola, mi ordenador lleva unos cuantos dias que se apaga solo por que la CPU llegaba a 112ºc, pero ahora esta mas o menos bien entre 70-80ºC, pero cuando voy a entrar en Windows (7) se me queda en negro me sale una pantallita azul y muxas letras en blanco y se reinicia.
E probado infinidad de soluciones y nada, hasta que e desinstalado los drivers de la tarjeta grafica y PARA MI SORPRESA, se inicio bien windows.
Ahora cada vez que instalo los drivers y tengo que reiniciar se me vuelve a quedar en negro y me sale la pantalla azul otra vez.

A que es debido?, puede estar dañado el Sistema operativo, o es la grafica??
Mi tarjeta grafica es NVIDIA GeForce 7600 GS



Espero que me ayuden



GRACIAS
#29
Hardware / Temperatura de CPU
5 Septiembre 2010, 18:37 PM
Hola, resulta que ultimamente el PC, se me apaga solo cuando lleva un rato encendido.
Me a dado por mirar la temperatura de la CPU y suele estar entre 70 y 100 grados!!!
A llegado a estar a 120 y luego se a apagado.

Me gustaria saber por que me a subido tanto la temperatura de la CPU?

Que puedo hacer para bajarle la temperatura?? ( Tiene 2 ventiladores dentro, no me digais que me compre otro)

Tengo entendido que la tempertatura normal esta  alrededor de 40 o 60 grados





PORFAVOR NECESITO AYUDA



GRACIAS
#30
Dudas Generales / Cambiar IP
11 Agosto 2010, 11:27 AM
Hola, resulta que an baneado a un amigo en un juego y le an pillado la IP.

Me gustaria saber como puedo cambiarle la IP, para que pueda volver a jugar, esta arrepentido por lo que hizo, y no es justo que no pueda volver a jugar en su vida.


Porfavor ayudadme a cambiarle la IP



gracias