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ú

Mensajes - AnthonyS

#1
Buenas noches,tras haber leído el tema te dejo una solución a tu dilema,espero que con esto te ayude.

El código y la explicación :


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

int main(int argc,char **argv){
char frase[] = "arequito, centro soguero del pais";
FILE *ptrFrase = NULL;

if(!(ptrFrase = fopen("frase.txt", "w"))){
printf( "\n Error al abrir %s Para escribir. Finaliza el programa.", frase );
exit(1);
}

fprintf(ptrFrase, "%s", frase);
if(fclose( ptrFrase ) == EOF){ /*Fijate que según el link de documentacion "wikilibros.com",se explica que fclose devuelve
                                0 si se cierra correctamente, y en caso contrario devuelve EOF,por lo que si
                                devuelve EOF,es cuando se tiene que entrar en este bucle.
                                    Con esto se comprueba si falla o no,ya que mostraria la frase de abajo si no hubiera
                                        logrado cerrarlo correctamente.*/
printf( "\n No se ha podido cerrar el fichero\n");
system("PAUSE");
}

return EXIT_SUCCESS;
}



Un saludo.

Anthony.
#2
Me ha ayudado,muchas gracias por la solución.
Un saludo de antemano.
Anthony.
#3
Buenas tardes,estoy haciendo una clase sencilla que ilustre como se definen el constructor de movimiento y la asignacion por movimento,pero me da un error tras indicar que no acepta && en el prototipo del constructor de mov.

Código (cpp) [Seleccionar]

class Vector
{
    int size;
    double *elementos;
    public:
    Vector(int tam);
    Vector(const Vector& vec);
    Vector& operator =(const Vector& v);
    Vector(Vector&& vec); //Ctor. de mov.   ESTE METODO ME DA ERROR
    Vector& operator =(Vector&& v); //Ctor. de mov. ESTE TAMBIEN
    const double& operator[](const int i)const;
    double& operator [](const int i)const;
    int tam()const;
    ~Vector();
};


Por favor que alguien me aclare porque esta este error.
Gracias de antemano.
Un saludo.
#4
Programación C/C++ / Re: como invertir un vector
24 Febrero 2017, 14:38 PM
Buenos días, una forma sencilla de hacer ese algoritmo seria :

1º Ordenando el vector.
2º Mostrar los elemenos ordenados.


Codigo:


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

int main()
{
    int i,j,aux,vec[10]={4,6,5,-7,10,20,-30,60,25,15};
    for(i = 0;i<10;i++) //Repetira el bucle interno 10 veces
    {
        for(j = 0;j<10;j++) //Este bucle posicionara al elemento i en el lugar que le corresponderia en la iteracion i.
        {
            if(vec[i]<vec[j]) //Hara un cambio de valores para ir dejando en i elemento menor en la posicion que le corresponde
            {
               aux = vec[i];
               vec[i] = vec[j];
               vec[j] = aux;
            }
        }
    }
    for(i = 0;i<10;i++)        printf(" %d ",vec[i]); //Muestra
    return 0;
}




Hay varios algoritmos de ordenación,he utilizado el que mejor se suele entender.
Un saludo.
#5
Saludos.

Me pidieron un ejercicio igual que ese en clase hace 1 año,te mostraré el código para ver si te ayuda a aclararte.



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

int main()
{
    int numero=0,propuesto=0;
    printf("Introduzca un numero mayor que cero,y luego uno desde 0 hasta 9 \n el primero sera usado de referencia y el segundo el que se \n busca.\n");
    while(numero<1 || propuesto<1)  scanf("%d %d",&numero,&propuesto);
    while(numero>0)
    {
        if(numero%10 == propuesto)
        {
            printf("El numero pertence a la cifra introducida \n");
            numero = 0;
            propuesto = 0;
        }
        else
            numero = numero/10;
    }
    if(propuesto)  printf("La cifra propuesta no existe en el numero\n");
    return 0;
}




Un saludo.
#6
En ese caso habría que poner

  scanf("%d",m+i+j);

El compilador a ver que es una variable puntero,la guardaría de forma correcta.

PD: El puntero a enteros datos,
esta para dirigirse a una dirección de memoria que contiene
el entero a utilizar o modificar(o apunta hacia el primer elemento de la matriz).
Espero haberte ayudado.
Un saludo.
Anthony.
#7
Muchas gracias por la respuesta,he terminado haciéndolo de otra forma,pero aun así seguramente vaya a usar tu propuesta en otros código.
Un saludo.
Anthony
#8
Programación C/C++ / Re: Devolver un Array
14 Diciembre 2016, 19:34 PM
Para lograr el objetivo que propones,la forma mas habitual es usar el paso por referencia.
Con esto usaremos un vector creado en main y poder variar sus datos en funciones o procedimiento,espero que hayas visto el paso por referencia y como se trabaja con el.Un ejemplo:

C++:

Código (cpp) [Seleccionar]
#include <iostream>
using namespace std;  //incluir iostream y esta instruccion son lo mas habitual en c++

//Supongamos un procedimiento que trabajara con el vector que le transfiero.
void cambiar_valores(int* vec);  //Recibira la direccion de memoria del primer elemento  
                                             //de vec.
int main()
{
int vector[5]={0,1,2,3,4};
cambiar_valores(vector);   //Se transfiere el vector al procedimiento.
cout<<vector[0]<<vector[1]<<vector[2]<<vector[3]<<vector[4]<<endl;
//Se mostraran los valores cambiados.
return 0;
}

void cambiar_valores(int* v) //Al haber paso por referencia,los datos cambiado de                      /                                        //v,permaneceran tras el procedimiento.
{
//Cambio de los valores
v[0] = 100;
v[1] = 200;
v[2]=300;
v[3]=400;
v[4]=500;
}


X--------------------X

Espero haberte ayudado.
Un saludo.
Anthony.[/size]


Mod: Los códigos deben ir en etiquetas GeSHi
#9
Programación C/C++ / Re: Listas y Archivos en C++
14 Diciembre 2016, 19:13 PM

Pues,una manera es hacer un Pila que contenga los elementos(de manera dinamica o pseudostatica) y que esta vaya guardando las puntuaciones de los concursantes.
La biblioteca veector tambien tambien una gran opcion si no deseas implementar.
A la hora de guardar los datos en un archivo txt ,lo mas usual seria emplear la biblioteca fstream y emplear la clase ostream o fstream.
Un saludo.
Anthony.
#10
Quisiera usar este fragmento,el caso es que necesito implementar esta estructura para cualquier tipo de dato,y usar posicon como un tipo de dato que apunte a nodos que pide el problema.
Gracias de antemano.

Código (cpp) [Seleccionar]
template<typename T>
struct nodo
{
   T elemento;
   nodo* anterior;
   nodo* siguiente;
   nodo(const T& contenido,nodo* a=POS_NULA,nodo* b=POS_NULA) :     elemento(contenido),anterior(a),siguiente(b) {};
};

template<typename T>
typedef nodo* posicion;




Mod: Los códigos deben ir en etiquetas GeSHi