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

#1
Buenas ¿puedo hacer esto en c++?

Código (cpp) [Seleccionar]

class A
{
private:
         int N;
         int(*p)[N];
public:
         A(int N);
         ~A();
}

A::A(int N)
{
         this->N;
         p=new int [N][N];
}
A::~A(){}


En caso de que no, ¿como podria hacer una matriz con new que reserve de una vez las NxN celdas y asi me queden todas las celdas juntas (con respecto a la dirección de memoria)?
#2
Programación C/C++ / estructuras dentro de una clase
19 Septiembre 2017, 20:34 PM
Estoy haciendo la declaración de una clase y quiero que esa clase contenga dos estructuras del mismo tipo.

¿La declaración de la estructura la tengo que hacer antes de la declaración de clase o la puedo hacer dentro de la declaración?
#3
Programación C/C++ / Declarar una funcion en c
15 Septiembre 2017, 23:06 PM
Leyendo el libro " el lenguaje de programacion c" en el cspitulo 8 sección 7 define una funcion y adentro declara una funcion.
Algo asi:

void malloc(unsigned n){//definicion de funcion
    ...
    Tipo *morecore(unsigned);//declaracion de funcion
    ...
}


¿Es esto posible?¿cuando hay que usarlo?
#4
Programación C/C++ / Definición de stdin en C
5 Septiembre 2017, 11:59 AM
Es legal definir stdin como sigue:

#define stdin (&_iob[0])

Donde _iob es un arreglo de estructura tipo FILE.

¿Despues yo podria hacer esto? ¿Por que?

stdin->flag

y entrar a la variable flag de la estructura FILE
¿Se pueden usar el operador de desreferencia sobre una dirección de memoria?

o debria definir a stdin asi:

#define stdin (_iob)
#5
Hola, estoy aprendiendo POO en C++ y conozco algo de C.

Mi duda es si en C, con estructuras creadas por nosotros y con los distintos tipos de punteros (int, char, a funcones, etc) y memoria dinamica se podría crear algo parecido a las clases de C++.
También me gustaría saber si todo programa creado en C++, se podría crear en C.

Saludos.
#6
Buenas, leyendo el libro "El lenguaje de programación C" de Brian Kernighan en uno de los últimos capítulos habla de la interfaz con el sistema operativo Unix. y muestra funciones como read, write, open, etc. mis dudas son:

°¿solo sirven para Unix o también para windows?
°¿están declaradas y definidas en una carpeta en particular como <stdio.h>, o hay que declararlas?
#7
Quisiera saber si es legal y una buena practica crear una variable a la mitad de un bloque después de haber escrito código, como por ejemplo:


main(){
    int i=0;
    while(){
        .
        .
        .
    }
    int c;
    .
    .
    .
    .
}
#8
Hola, alguien sabe si esta definido en C la prioridad que tienen las funciones. Es decir, si el compilador intentara buscar la declaración de una función primero en el archivo donde se esta trabajando o en los header con el preprocesador. saludos.
#9
Programación C/C++ / [C] EOF en entrada standar
3 Febrero 2017, 07:27 AM
Existe verdaderamente el caracter EOF cuando se trabaja con la entrada estándar.

mi duda surge por la siguiente linea de código:


while((c=getchar())!=EOF){
   .
   .
   .
}


el programa no termina nunca, es decir, se queda esperando.
#10
Programación C/C++ / macros en C
24 Enero 2017, 22:49 PM
Buenas estaba tratando de analizar la siguiente macro:


#define swap(t,x,y) { t _z;  \
                              _z=y; \
                              y=x; \
                              x=_z; }                 


según el programa el parámetro t debe ser el nombre de un tipo (int, char o float)que sea del mismo tipo que los parametros x e y para así poder declarar la variable _z del mismo tipo.

mis dudas:
Para que sirve la barra '\' después del punto y coma.
la otra duda que tengo es si los parametros de swap pasan por valor como en cualquier funcion de c.
y la ultima duda, la macros reemplaza un texto de la forma
main(){
swap(t,x,y);
}

por todo lo qu esta adentro de las llaves {} incluyendo las llaves o las llaves no las reemplaza. si remplaza con las llaves no debería dar error.

main(){
{ t _z;  \
_z=y; \
y=x; \
x=_z; }
}
#11
Buenas, leyendo un libro de C, decía que solo en los operandos de los operadores ("&&","||","?:" y ",") se especifica la evaluacion de un operador.

y por lo tanto en el siguiente ejemplo:


a[i]=i++;


no se sabe si el subindice es el valor antes o después del incremento.

mi duda es: como el operador [] es el de mas alta precedencia la i  seria el valor viejo cualquier sea el compilador con el que se compile.¿ es acertada la conclusion?

si en cambio, el código seria así:


a[i]=(i++);


ahi el subindice si seria el nuevo ya que el operador () esta antes que el []

mi ultima duda:

si un operador unario como cast se pone al lado de una expresión compuesta

(int)(a+b)


que se hace primero:
según el operador (), como la asociatividad es de izquierda a derecha, se ara el cast, pero el operador cast se evalúa de derecha a izquierda
#12
Buenas, me surgió la duda si es posible realizar una función que devuelva un puntero con la dirección de memoria de una variable static definida dentro de la función. por ejemplo pasarle la dirección de un arreglo definido como static dentro de una función.
la idea de esa función, es que quien la usa no se deba preocupar por el largo del arreglo debido a que este se crearía en la misma función (dentro de un if{..} por ejemplo).
#13
Buenas resulta que compile el siguiente codigo:

Printf("%d",~((unsigned char)~0));


Al compilarlo da -256
Segun la logica que sigo yo y sabiendo que un char tiene 8 bits no entiendo como llega a ese resultado.

Primero al cero le realiza su complemento a1 por lo que queda todos unos,sabiendo que el char tiene ocho bits queda 11111111 que seria el numero 255. Y si luego a todos esos unos se le realiza su complemento a1 quedan todos ceros.
#14
Buenas estoy intentando no usar corchetes en el código pero no funciona como quiero, creo que es porque no entiendo bien cuando están explictos (cuando no son necesarios)


while(expresion)
   if(expresion)
       if (expresion)
           while(expresion)
               ;  //solo hace lo de adentro del while
       else
           while(expresion)
               ;  //solo hace lo de adentro del while
   else{
       if(expresion)
           expresión; //solo una linea
       else if(expresion)
           expresion; //solo una linea
       else if(expresion)
           expresion; //solo una linea
       else if(expresion)
           expresion; //solo una linea
       if (expresion) //nuevo if
           expresion; //solo una
   }
if (expresion) //este if no estaria adentro del primer while
   expresion; //solo una linea
else
   expresion; //solo una linea


segun lo que yo entiendo por los paréntesis explícitos, todas las sangrías que he dejado son correctas, pero el código no hace lo que pido.
#15
Buenas escribo el siguiente codigo en c:


#include <stdio.h>
int main(void)
{
int c,i;
for(i=0;i<=8;i++)
printf("el modulo entre %d y 8 es: %d\n",i,i%8);
return 0;
}


y lo que me sale es esto:

el modulo entre 0 y 8 es: 0
el modulo entre 1 y 8 es: 1
el modulo entre 2 y 8 es: 2
el modulo entre 3 y 8 es: 3
el modulo entre 4 y 8 es: 4
el modulo entre 5 y 8 es: 5
el modulo entre 6 y 8 es: 6
el modulo entre 7 y 8 es: 7
el modulo entre 8 y 8 es: 0

pero creo que tendría que ser esto:
el modulo entre 0 y 8 es: 0
el modulo entre 1 y 8 es: 1
el modulo entre 2 y 8 es: 2
el modulo entre 3 y 8 es: 3
el modulo entre 4 y 8 es: 5
el modulo entre 5 y 8 es: 6
el modulo entre 6 y 8 es: 7
el modulo entre 7 y 8 es: 8
el modulo entre 8 y 8 es: 0

que seria el primer numero después de la coma
#16
Programación C/C++ / Funcionamiento fgets
5 Enero 2017, 01:56 AM
Buenas estaba viendo una posible implementacion de la función fgets, que esta en el libro "el lenguaje de programacion C".


char *fgets(char *s, int n, FILE *iop)
{
register int c;
register char *cs;

cs=s;
while (--n>0&&(c=getc(iop))!=EOF)
    if ((*cs++=c)=='\n)
        break;
*cs='\0';
return (c==EOF&&cs==s)?NULL : s;
}


mi duda es, para que fgets funcione "s" debe ser un arreglo o tener asignado una memoria con malloc o calloc y n no puede ser mayor a la cantidad de celdas reservadas.
#17
typedef struct{
char *name;
int nia;
}datos;
struct elemento_t{
datos valor;
struct elemento_t *next;
};
typedef struct elemento_t elemento_type;
typedef struct{
int tamanho;
int num_elementos;
double densidad_deseada;
elemento_type **tabla;
}tabla_type;


el primer typedef define un tipo de datos llamado "datos" que es una estructura que tiene un puntero a char y un entero.
luego define otra estructura llamada elemento_t que adentro contiene una estructura tipo "datos" creada anteriormente y que tiene el nombre valor, y un puntero a la misma estructura.
luego lo que hace es definir a la estructura ultima como un tipo de dato llamado elemento_type.
por ultimo define una estructura como table_type que contiene dos enteros, un double y un apuntador que apunta a apuntadores que apuntan al tipo de dato elemento_type.

AHORA BIEN, MI DUDA VIENE EN EL SIGUIENTE PEDAZO DE CÓDIGO:


tabla_type table;
int i;
table.tamanho=20;
tabla.num_elementos=0;
tabla.densidad_deseada=0.25;
tabla.tabla = (elemento_type **) malloc (sizeof(elemento_type *)*table.tamanho);
for (i=0;i<table.tamanho;i++)
{
     tabla.tabla[i]=NULL;
}


¿a que se refiere la expresión "tabla.tabla"?

se que tabla es un puntero que apunta a un puntero que apunta a una estructura de tipo elemento_type

lo que me confunde es el signo de puntuación, según entiendo con el signo de puntuación se entra a los miembros de una estructura.
#18
Programación C/C++ / Puntero a función.
18 Diciembre 2016, 00:05 AM
Buenas, tengo una duda con este código que creo que esta mal:


No tendría que ser:

(int (*)(viod *, void *))=(numeric ? numcmp:strcmp));
#19
Programación C/C++ / Duda sobre función
16 Diciembre 2016, 04:14 AM


porque dice que es esencial pasar la dirección del array ¿no se podría pasar como argumento de la función el arreglo en ves de un puntero y trabajar con el arreglo dentro de la función?

mi pregunta es:¿es necesario hacerlo con puntero?
#20
a continuación la imagen de un programa separado en varios archivos fuentes, mi duda es:

si la función getch y ungetch del archivo getch.c se usan en el archivo getop.c, el archivo getch.c no debería también incluir a calc.h

¿que pasaría si los prototipos de las funciones de getch y ungetch se declaran en el archivo getch.c en ves del archivo calc.h?

¿porque el archivo stack.c incluye a calc.h, si no necesita ninguna funcion o variable externa al archivo?



#21
Buenas, estoy leyendo el libro "El lenguaje de programación C" de Brian Kernighan y en la pagina 80 del capitulo 4 (funciones y la estructura del programa) hay un código donde declara el prototipo de la función atof (previamente echa) dentro del bloque main, porque hace esto y no la declara antes de entrar al bloque main ¿tiene alguna ventaja?

según el libro declara atof explicitamente en la rutina que la llama.
#22
Buenas, tengo una duda sobre cual seria la manera mas conveniente y precisa para medir el tiempo de ejecución de un programa. saludos.
#23
Programación C/C++ / variables estaticas en main
13 Diciembre 2016, 05:04 AM
es posible crear una variable estática en main de, por ejemplo, un arreglo, así cada vez que ejecuto el programa me queda guardado lo que quedo la ultima ves que el arreglo se modifico.

seria algo así:

#define <stdio.h>
main()
{
static int arreglo[10];
.
.
.
}
#24
buenas, quisiera saber, en forma general cuales son los pasos que sigue la computadora para almacenar un numero en punto flotante, desde que un usuario ingresa el numero por la computadora hasta que lo almacena en el disco.saludos
#25
Buenas, mi profesor me explico que las computadoras solo "comprenden" la representación de números binarios, por eso una computadora "entiende" el numero 5 como 101. mi duda es, si las computadoras solo comprenden el numero binario¿como hacen para representar números en base 10? saludos.

como hace para hacer:
1x2^2+0X2+1*2^0=5 si no sabe lo que es un dos
#26
hay alguna forma de poder definir los argumentos de una función de manera dinámica como con argc y **argv, de manera que uno guarde la cantidad de parámetros que se ingreso y con la otra la información.saludos.
#27
Buenas, resulta que yo definí el argumento una función como float, y cuando la uso en ves de pasarle un float le paso un double. adentro de la funcion imprimo en pantalla el resultado y me sale el numero con doble precisión, cuando yo esperaría que salga con la precisión de float¿alguien sabe a que se debe esto?
#28
Buenas, me entro la duda de como funciona un arreglo, en este ¿las memorias de cada celda están siempre juntas o puede ser que estén separadas? si están separadas ¿como hace para saber la dirección de la siguiente celda? saludos.
#29
Buenas he estado usando punteros a funciones y he notado que si al argumento de una función lo definimos como float y después cuando usamos la función le pasamos al argumento una variable double, y la imprimimos en la pantalla con printf anda perfecto y queda como double, pero si defino al argumento como un puntero a float y le pasamos un puntero a double no da un resultado coherente, ¿alguien sabe a que se debe esto?
#30
Buenas, estoy pasando un puntero(que apunta a cierta memoria reservada por malloc) como argumento de una función y adentro de la función quiero saber el largo del arreglo, lo quise hacer del siguiente modo pero me tira un error.


int main( void ) {
float *p,j;
int i=0,tamanio;
scanf("%d",&tamanio);
p=(float*)malloc(tamanio*sizeof(float));
j=funcion(p,i);
}

float funcion(float *n,int i){
if (i==(sizeof(n)/sizeof(float))){
...}
}


el error esta en el if de la función, dice:
error:cannot cast 'float' to 'float*'

si a alguien se le ocurre porque pasa esto, me seria de ayuda, gracias.
#31
Buenas, resulta que use la función malloc para reservar cierta memoria:


float *p;
int tamanio;

scanf("%d",&tamanio);
p=(float*)malloc(tamanio*sizeof(float));


ahora resulta que quiero pasar ese "vector" p como  argumento en una función, lo tendría que pasar así:

float funcion(float *p);


o se lo paso como vector:


float funcion(float p[]);
#32
Programación C/C++ / Malloc sin stdlib
23 Junio 2016, 22:54 PM
Buenas, he podido usar la función malloc sin especificar:

#include <stdlib.h>

¿alguien sabe a que se debe esto?
#33
buenas, estaba pensando que se necesitaría para poder crear el código que permite guardar en un arreglo cierta cantidad de datos int que se le ingrese, que deben estar separadas por espacio (la diferencia seria es que en ves de char sea un arreglo de int).

Podría usar scanf para pasar los datos a una variable, pero después no se como pasarla a un arreglo, creo que estoy obligado a usar memoria dinámica ¿no?

si alguien tiene alguna idea o ya hizo algo parecido me serviría, saludos.
#34
Buenas, mi duda es la siguiente:
hay alguna forma de agregar comentarios a un programa en C y que después los pueda leer desde el cmd poniendo: "help nombredelprograma", como pasa con todos los comandos de cmd al escribir help.
Saludos
#35
Hola, como bien dice el titulo, cual es la forma de guardar datos de una lista, es decir, que cada vez que abro el programa no tenga que crear toda la lista de nuevo y se guarden los datos(me imagino que nunca le tengo que liberar la memoria heap que le pedí al sistema operativo). ¿por donde se empieza?

gracias y saludos.
#36
Programación C/C++ / feof y fscanf
21 Mayo 2016, 02:48 AM
Hola mi duda es si se puede usar la función feof como condición en un while al leer un archivo con la función fscanf.

el pseudocodigo seria:

// despues de hacer el protocolo de abrir el archivo y demas


while (feof(archivo)){  //como feof devuelve 0 si encontró feof se podría usar así creo yo
fscanf(archivo,"%d",&(arreglo[i]));
i++;
}

#37
Buenas, hice un código que pretende leer de un archivo de texto con scanf las primeras 20 lineas y ponerlo en un arreglo, la cosa es que no funciona.

mi código:


#include <stdio.h>

void copiar(float arreglo[], int cantidad);

void main (void) {
float datalog[200];
int i=0;
copiar(datalog,20);
while (i<=20) {
printf(" %f \n",datalog[i]);
i++;
}
}

void copiar(float arreglo[],int cantidad) {
int i=0;
FILE *archivo;
archivo=fopen("datalog2","r");
if( archivo )
     printf( "existe (ABIERTO)\n" );
  else {
     printf( "Error (NO ABIERTO)\n" );
}
while (i<=cantidad){
fscanf(archivo," %f ",arreglo);
i++;
}
fclose(archivo);
}


¿hay algo mal en la sintaxis? (el archivo no aparece como .txt ni como .dat ni nada, asique le puse solo el nombre)

saludos.
#38
Hola como bien dice el titulo, tengo un archivo .txt así:
45,678
67,890

y yo quiero que queden así:
45.678
67.890

mi idea es, aprovechando que se que el caracter 8 en ascii es retroceso , el 44 la coma y el 46 el punto hacer esta función:

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

void main (void) {
FILE *archivo;
int c;

archivo=fopen("varx.txt","r+");
c=fgetc(archivo);
while (c != EOF) {
if (c==44) {
fputc(8,archivo);
fputc(46,archivo);
}
c=fgetc(archivo);
}
fclose(archivo);
}


el problema es que el archivo no se modifica, si alguien sabe que es lo que esta mal en el código y me lo dice me serviría de mucho, saludos.
#39
Buenos días, como dice el titulo, hice un programa desde donde pasas la dirección de la variable como parámetros en una función, y dentro de esa función, los parámetros se van a usar de nuevo como  parámetros en otra función.

mi problema es que el compilador me dice que tiene un error y creo que es por la sintaxis:

acá va un ejemplo de la sintaxis:


#include <stdio.h>

void funcion1(int *, int *,int *);
void funcion2(int *,int *,int *);

void main(void) {
int a=b=c=0;
funcion1(&a,&b,&c);
}

funcion1 (int *a,int *b, int *c) {
.
.
.
funcion2(*a,*b,*c);
.
.
}

funcion2(int *a, int *b, int *c) {
.
.
.
}


saludos y gracias.
#40
Hola como dice el titulo, lo que quiero hacer es escribir un archivo  .txt o .dat con números  los números que se escriben en el archivo se sacan de un arreglo previamente cargado, el problema es que no se si mi archivo esta escribiendo bien los datos porque matlab no me lo abre.

a continuación mi código:


#include <stdio.h>
#include <math.h>
#define PI   3.141592653589
void archivo_matlab(float,float,float,float,float);

void main (void) {
archivo_matlab(1,2,3,4,5);
}

void archivo_matlab(float A,float a,float h,float B,float b) {
float arre1[151],t=0,x=0,y=0;
int i=0;
FILE *fichero;
while (t<=2*PI){
x=A*sin(a*t+h);
arre1[i]=x;
t=t+PI/75;
i++;
}
fichero=fopen("datos1.dat","w");
fwrite(arre1,sizeof(float),151,fichero);
fclose(fichero);
}



#41
Hola, hice un código para contar los días que hay entre dos fechas, pero creo que no es tan eficiente. mi duda es si hay alguna función predefinida para sumar restar o trabajar con fechas. Gracias y saludos.
#42
Hola, como dice el titulo, lo que quiero hacer es:

copiar de una variable entera cierta información y guardarla en otra variable.

el problema surge al poner en la variable entero una fecha como la que sigue

int d, a=25-02-1998;

quisiera que la función le saque el guion medio a esa variable:

d=25021998;

gracias por sus respuestas y saludos.