Hilo Oficial de C/C++

1, 2, 3, 4, 5, 6
Pues nunca habia oido hablar de eso, quizas no sea standard :P

Un saludo y gracias ;)
Gracias Zheo por contestar, pero aunq sea del paleolitico el turbo c ( que lo es) no tengo mas remedio q usarlo, porque asi lo exige mi profesor.
Un saludo
nebb_5 escribió:Gracias Zheo por contestar, pero aunq sea del paleolitico el turbo c ( que lo es) no tengo mas remedio q usarlo, porque asi lo exige mi profesor.
Un saludo

Uff, entonces no digo nada, aunque yo te recomiendo que tú uses para tus cosas el dev, y también que se lo recomiendes a tu profesor para que lo pruebe y cambie. Para aprender con el Dev-C++ vas sobrado y además no necesita un ordenador de la leche para que funcione :)
Tanto el IDE como el compilador que incluye son libres, con lo que no tendrías ningún problema en distribuirlo :)
este hilo mola!

yo tb tengo informatica en ingenieria tecnica, y estamos programando en C, y la verda me va un poco mal XD
usamos komo kompilador el lccwin32, q la verda me parece una puta mierda xD.
el caso esq pa dentro dos semanas necesito tener echo el juego del ahorcado y no lo llevo mu bien...
¿algun alma caritativa haria el milagro de pasarme el codigo?
jejjeej
saludoss [barret]
Skareb te aconsejo que lo intentes, que te esfuerzes al maximo, luego los errores podremos ayudar, pero dar el codigo entero......., no vamos a trabajar por ti, ademas asi no aprendes, o sea, nota en C = 0, eso quiere decir repetir curso ;)
Hummm hacer... las prácticas de otro no entra en mi lista de TODO´s

Si necesitas ayuda concreta es otra cuestión y mucha gente estaremos encantados de ayudarte, pero antes deberías demostrar que te has molestado al menos en intentarlo.
jeejje fale lo he intentao pero no ha colao :P
weno el codigo lo tengo en el otro orde en kuanto pueda me lo envio por correo y os lo enseño, llevo exo astq que te pide el nº d letras de la palabra y q imprima por pantalla los _ _ _ _ _ en funcion de lo q pongas, aora tengo q empesa a toketear el fixero con las palabras y los printf pal grafico del muñekito... komo tengo dos semanas pa acerlo, cuando tenga dudas os pregunto [barret]

gracias!
Hola a todos, a ver si me podeis ayudar con unas preguntillas de examen que tengo(Ingenieria tecnica industrial):

PREGUNTAS CORTAS

1- Mostrar por pantalla, separados por un salto d elinea y en una sola instruccion, los valores de las siguientes variables:

int f ;
float i ;
char letra, palabra[256];


2- Leer de teclado un valor para la segunda posicion del siguiente array (solo instruccion de lectura):

float af[2];


3-¿Como se declara la cabecera de una funcion que necesita cuatro variables de tipo entero, de las cuales los dos primeros enteros se le pasan por valor y los siguientes dos enteros se le pasan por referencia y no devuelve nada?


4-Leer la nota de un alumno dentro de la variable nota(variable de tipo entero), de tal forma que se proteja la entrada admitiendo solo valores comprendidos entre 0 y 10(ambos inclusive). Usando la sentencia do..while.


5-Declarar la cabecera de una funcion a la que se le pasa una matriz de 3x4 elementos de tipo entero y devuelve el numero de pares.


6-Leer todos los elementos de la variable vector(solo instruccion de lectura) sabiendo que disponemos d ela siguiiente declaracion de variables

float vector[1000];
int i;


7-Suponiendo qu etenemos almacenado un numero en una variable entera n, escribir por pantalla el mensaje indicando si el numero es mayor en valor absoluto que 10.

8-Leer un numero entero hasta que sea multiplo de 2 o de 3.Usando la sentencia do..while.


9-se desea guardar la letra h en la primera posicion del siguiente array:

char cad[5];


10-Suponiendo que tenemos almacenado un numero en una variable entera n, mostrar por pantalla el doble de su valor absoluto.


11- Leer un numero entero hasta que sea a la vez multilpo de 2 y de 3. Usando la sentencia do...while

PROBLEMAS

1- Realizar un programa que lea una cadena y la muestre al reves.


2- Implementar una funcion que muestre un triangulo de la altura indicada.
Ejemplo si se realiza la siguiente llamada: Triangulo(4), mostraria:
****
***
**
*


3-Escribir el cuerpo de una funcion que calcule el modulo de un vector de N elementos de tipo real.
Utilizar la siguiente cabecera:
float modulo (float u[],int N)


4-Escribir el cuerpo de una funcion que calcule el producto escalar de dos vectores reales de dimension N


5-Escribir un programa que calcule el angulo que forman dos vectores reales de dimension N.


6-Hacer una funcion que se le pase una matriz de 3x3 variables de tipo entero, y devuelva el valor de su determinante.
a b c
M[3][3]= d e f
g h i

Determinante(M)= a*e*i+d*h*c+gb*f-(c*e*g+f*h*a+d*b*i)


7-Implementar una funcion que muestre un triangulo d ela altura indicada.
Ejemplo: si se realiza la siguiente llamada: Triangulo(4), mostraria:
*
**
***
****


8-La empresa ACEINOX desea controlar el numero de barandillas que es capaz de fabricar al año. Suponiendo que cada año tiene 52 semanas y cada semana tiene 7 dias(y que la fabrica trabaja los 7 dias de la semana), realiza un programa que:

a) Pida y almacene el numero de barandillas que se fabrican cada dia del año.
ejemplo:
Semana 1, dia1, numero de barandillas fabricadas hoy?__(respuesta del usuario)
Semana 1, dia2, numero de barandillas fabricadas hoy?__(respuesta del usuario)
......
Semana 52, dia7, numero de barandillas fabricadas hoy?__(respuesta del usuario)

b) Muestre el numero total de barandillas realizadas cada una de las 52 semanas, de la siguiente forma:

Total semana 1:30
Total semana2: 85
......
Total semana 52: 32

c) Muestre el numero total de barabdillas realizadas a lo largo del año en total cada dia de la semana.

Total realizadas el lunes: 300
Total realizadas el martes : 428
.....
Total realizadas el domingo: 320

Si me podeis ayudar en alguna os lo agradeceria muchisimo, gracias por adelantado a todos.

PD: Tengo el examen pasado mañana y no pase de bucles, glupss, lo llevo de culo, tengo que mirar funciones, arrays ... gluppppps, menudo cuatrimestre me espera por vaguear.
Shelby al menos intenta hacerlas hombre.
Te aconsejo que lo intentes hacer tú y luego pongas los resultados, pero es que eso no es ayudar con unas preguntillas, es enseñarte totalmente lo básico de programación. En cualquier libro o tutorial de C leyendo un capítulo lo tienes.

Los problemas son otro cantar, si no se te ocurre se puede orientar en la dirección correcta.
¿Veis algo malo aqui?

#include
#include
void factorial (int);
int main(int argc, char *argv[])
{
int a;
printf("Introduce un numero entero\n");
scanf("%d",&a);
if (a<0)
printf("El numero no tiene factorial\n");
else
factorial(a);
system("PAUSE");
return 0;
}
void factorial (int x)
{
int cont,fact;
cont=fact=1; /*el error me lo da aqui*/
while(cont<=x)
{
fact=fact*cont;
cont++;
}
printf("El factorial de %d es %d\n",x,fact);
return;
}


El Dev-c++ no me lo compila, ¿Es porque coloco la funcion al final?

Edito: Ya di con ello , me faltaba una miserable llave, juas, la pongo en rojo.
Hola
Necesito que alguien me explique un poco el funcionamiento de algo parecido al "Sendkeys" de vb, por mas que miro en google no me aclaro para nada, y tambien si podeis, decirme como poder hacer un focus a una aplicacion, es decir activar su ventana

Salu2 y gracias

P.D se me olvidaba, si puede ser en c++ sino pues en c me conformo, gracias de nuevo
Explicar los que es el sendkeys para los que no lo sabemos sería una buena idea :P

Si es algo como generar pulsaciones de teclas sólo tienes que crear un mensaje y registrarlo en la cola de mensajes. Depende de si estas usando WIN32 API, MFC o .NET Framework, pero no debería ser muy complicado buscar a partir de ahí.
wenas, he conseguido el borland C es una version que en principio es para Msdos weno pues resulta que ahora lo usamos en clase (usan win2k) y lo he conseugido para usarlo en mi casa, yo uso el visual stdio xro weno, keria tenerlo para usar el mismo, y me da un error q no me gusta nada... lo raro es q tengo amigos con xp y si le deja, la unica difernecia con elllos es q yo tengo el sp2 y ellos o ninguno o el 1. El error es este, esto pasa al ejecutar el programa:

Imagen

os suena de algo? :S

salu2
wenas, he conseguido el borland C es una version que en principio es para Msdos weno pues resulta que ahora lo usamos en clase (usan win2k) y lo he conseugido para usarlo en mi casa, yo uso el visual stdio xro weno, keria tenerlo para usar el mismo, y me da un error q no me gusta nada... lo raro es q tengo amigos con xp y si le deja, la unica difernecia con elllos es q yo tengo el sp2 y ellos o ninguno o el 1. El error es este, esto pasa al ejecutar el programa:


Curioso, mira a ver si tienes en la carpeta bin el fichero BCW.exe [jaja] [jaja] [jaja] [jaja]


Por otra parte........

Conoceis alguna llamada NO bloqueante al teclado... vamos una función como scanf , getchar , _getche , _getch pero que no bloquee el sistema??? me da igual lo que haga, pero que detecte si se pulsa una tecla sin bloquearse. (para C, claro ;-) )

Salu2 && Thankyoussssssss
A ver si alguien me ayuda, la pregunta es muy sencilla creo pero no se como sacarla a ver en un problema de una estructura:

printf("Introduzca el titulo del libro:");
gets(lib1.titulo);

si escribo cualquier titulo de un libro como podria sacar las 2 primeras letras y la ultima del libro y almacenarla en un array?


Gracias
read(0,&array,2);

Creo que es esto lo que necesitas.
Ese gets.. con el gcc te dará una de warnings.. [looco]
Wenas a todos, hace muxo k no escribía por aki.

El caso es k tengo una dudilla (por no decir un problema de la ostia) [sonrisa]

Weno, tengo una "struct stat" llamada status con la informacion referente a un archivo (dicese...inodo,permisos,tamaño etc etc etc). El caso es k ahora tengo k reflejar todo ello por pantalla.

y estoy viendo k un simple printf no lo consigo (seguramente no se haga asi), asi k os explico como lo hago a ver si algun alma caritativa me lo sabe responder. Lo hago asi (para imprimir el tamaño del archivo)

printf ("Tamaño: %d",status.st_size)

y eso funciona perfectamente, me sale el tamaño correcto....

Ahora lo jodío....las fexas de ultima modificacion o ultimo acceso y tal...

haciendo lo de antes:

printf ("Ultimo Acceso: %d",status.st_atime)


me sale 1110823291, k creo k asi es como guarda el ordenador las fexas y tal.....¿pero como hago para k me salga un bonito "14 Marzo 20:28"?

He buscao un poco por google y tal, pero nada, no atino con la respuesta...

y algo parecido me sucede con los permisos de los archivos....

no se como hacer para k me salga por ejemplo -rwxrwxr-- ..por poner un ejemplo

Con cualkier cosilla k me podais contestar os estaré eternamente agradecido...o si conoceis algun manual online k trate del tema....tb os estare agradecido....enga gente, gracias adelantadas [oki]
A ver si alguien me ayuda:

void main()
{

char a[14];
int var;

printf("Introduzca una palabra");
gets(a);
var=strcmp(a,"falik");
printf("\n%d",var);
if (var==0) printf("\nLa palabra introducida es falik");
if (var < 0) strcat(a," menor");
if (var > 0) strcat(a," mayor");
puts(a);
}

el programa funciona pero cuando introduzco una serie de caracteres menor como x ejemplo "hola" me indica que es mayor.
falik, lo primero es que supongo que sabes que strcmp es para comprar si una cadena es igual a otra, no si contienen el mismo número de caracteres.

Luego,hablo muy de memoria, ya te aviso, pero si no recuerdo mal, y lo que quisieras sería saber si la palabra introducida es igual a "falik", sería algo así:
strcmpi(a,"falik",strlen(a))
{
}


Es que no me acuerdo nada bien, pero creo que así era para comparar determinado número de caracteres:
strcmpi(a,b,n){}

donde:
strcmpi --> es como strcmp sólo que ignora si es mayúsculas ó minúsculas. Es decir "FaLiK" sería igual que "FALIK", igual que "falik".
a y b --> cadenas destino, origen a comparar.
n --> numero de caracteres que quieres comparar

En fin, igual he metido la pata hasta el fondo, pero al menos te servirá para investigar algo, porque algo de eso había.

¿Alguien sabe por qué el gcc da warnings con los "gets"? A mí en la uni me lo enseñaron siemrpe con gets.

Un saludo.
Por problemas de seguridad. man gets ;) (apartado FALLOS)
Para la mayoría de los novatos a parte de aprenderos la sintaxis de C os recomiendo aprenderos las funciones ANSI, aquí os paso un link con la descripción de todas las librerias ANSI.

http://c.conclase.net/librerias/funciones.php

Por cierto, haceros con Linux + gcc o una API como Anjuta. Se aprende mucho mas fácil y mejor.

Un saludo.
Gracias NeoRave!

De todas formas, siguiendo el enlace de Jaime sbre el estándar ANSI, aparece gets como una función totalmente válida... pero en cambio no veo la función "read" por ningún lado... ¿qué ta pasando aquí?

Un saludo!
Jaime escribió:Para la mayoría de los novatos a parte de aprenderos la sintaxis de C os recomiendo aprenderos las funciones ANSI, aquí os paso un link con la descripción de todas las librerias ANSI.

http://c.conclase.net/librerias/funciones.php

Por cierto, haceros con Linux + gcc o una API como Anjuta. Se aprende mucho mas fácil y mejor.

Un saludo.

Lo siento, el Anjuta me da bastante grima... si con vi/vim se os hace un poco dificil, yo recomendaría Kate.
Ojo, no digo que Anjuta sea malo, es una opinión personal :P
Un saludo
eTc_84 escribió:Lo siento, el Anjuta me da bastante grima... si con vi/vim se os hace un poco dificil, yo recomendaría Kate.
Ojo, no digo que Anjuta sea malo, es una opinión personal :P
Un saludo


Yo es que uso el Anjuta casi como editor de textos, y para compilar modulo a modulo para ver los errores en el editor, luego ya tiro de consola y makefile.

El gets aunque el vi te de muchos warnings, que los da por el trato que le da al buffer de entrada al no conocer el tamanio de la entrada, yo recomendaría al hacer gets, cambiarlo por un fgets(cadena, tamanio,stdio) y ya luego lees la cadena con un sscanf. Es bastante mejor.

En cuanto a lo de read, yo lo he usado principalmente para escrituras y lecturas de pipes, que están en las librerias unistd.
Read/write como lectura/escritura de entradas y salidas no he usado nunca, si eso fread o fwrite, para leer/write byte a byte de ficheros.

Creo que las llamadas read/write no es standar (ANSI).

Un saludo.

P.D. ETC, ¿por qué te da grima el anjuta, que defectos le ves?
Jaime escribió:P.D. ETC, ¿por qué te da grima el anjuta, que defectos le ves?

Antes de nada... decir que he programado poco en c bajo linux, pero lo de sobreimpresionarse los parámetros y que te cierre él solito los ) no me gusta. Prefiero un editor que no me diga nada y luego el gcc ya se queja ;-)
Un saludo
eTc_84 escribió:Antes de nada... decir que he programado poco en c bajo linux, pero lo de sobreimpresionarse los parámetros y que te cierre él solito los ) no me gusta. Prefiero un editor que no me diga nada y luego el gcc ya se queja ;-)
Un saludo


No se que versión tendrás de anjuta, pero a mí nunca me ha cerrado un paréntesis, te recomiendo usar Linux para programar porque tiene los mejores entornos y los mejores debuggers (dgb/ddd INCREIBLE)

Un saludo.
Jaime escribió:No se que versión tendrás de anjuta, pero a mí nunca me ha cerrado un paréntesis, te recomiendo usar Linux para programar porque tiene los mejores entornos y los mejores debuggers (dgb/ddd INCREIBLE)

Un saludo.

Cierto, me confundí con el jcreator que uso para java bajo win32, lo siento. XD
Lo del JCreator se puede desactivar. Si que es un coñazo lo de los paréntesis.

Pero eso si, sólo los paréntesis, y seguro que porque no me he acostumbrado. En general el autocompletado de código es el mejor invento después del pan con nocilla. [jaja]

Por otro lado Anjuta no es una API, es un IDE

Y por cierto, sobre entornos de programación y depuradores, VS .NET está mucho mejor que gcc + cualquier editor en mi opinión. Si encima le pones un par de añadidos al VS para mejorar el intellisense y demás zarandangas puedes aumentar muy mucho la velocidad a la que codificas.
Hola tenemos un problema al compilar usando el dev 4.9.9.1 nos da este error C:\Dev-Cpp\Makefile.win [Build Error] [prueba.o] Error 1, eso en el proyecto y usando el .cpp nos da un warning solamente, hemos probado en otros ordenadores y compila bien no da errores, hemos probado pegando el codigo fuente en otro proyecto y nada sigue saliendo el mismo error a ver si alguien sabe pq es y nos da una solución gracias.

Otra pregunta mas hay alguna opcion de ejecutar el programa con el dev a pesar de tener warnings?
En teoría si da warnings compila y enlaza igualmente (a no ser que encuentre errores en el enlazado)

Si puede ser pega aquí el log completo de error que da por favor; puedes cortarlo desde la pestaña "resultados de la compilación"
hola, a pesar de que ya lo he puesto en otro hilo pues lo comento aqui ya que este es el hilo oficial.
Ok, vamos a ver, tengo un array al cual quiero introducirle datos de tipo double a trav�s de una funcion, el problema es que aunque yo lo veo todo correcto me sale le siguiente fallo:

cannot convert `double (*)(((n-1)+

segun me han comentado ya el fallo podria estar aqui:
NeoRave escribió:Tratas de asignar un double a un double*
, solo que no tengo mucha idea de cual es la diferencia del double y el double*.

Bueno, aqui pongo el codigo a ver si alguien me puede explicar mas concretamente que es lo que falla

#include <iostream>
#include "libreria.h"

using namespace std;

void LeerMatriz(double matriz_e[][kTMAX],int filas,int columnas)
{
   int i,j;
   for (i=0;i<filas;i++)
   {
      for (j=0;j<columnas;j++)
      {
         cout<<"introduce el valor "<<i<<""<<j<<endl;
         cin>>matriz_e[i][j];
      }
   }
}

int main()
{
int n,t;
cin>>t>>n;

double matriz_e[t][n];
LeerMatriz(matriz_e,t,n);

}



-> dentro de liberia.h tengo el prototipo de la funcion y el valor de kTMAX:
const int kTMAX=1000;
void LeerMatriz(double [][kTMAX],int,int);


gracias y hasta luego!

-krausen-

EDITADO: Ya encontre y solucioné todos mis problemas con ese ese codigo :p
krausen escribió:
segun me han comentado ya el fallo podria estar aqui:
, solo que no tengo mucha idea de cual es la diferencia del double y el double*.


*double es un apuntador a double,lo que significa que no es un double en si, sino que seria un link a otro que es un double.
deathline escribió:*double es un apuntador a double,lo que significa que no es un double en si, sino que seria un link a otro que es un double.


gracias. Ademas creo que ya he pillado el fallo por lo que por ahora todo ok [Ooooo]
Hola!!

A ver os xplico mi duda/cuestion/tema.

Tengo k hacer un proyecto para fin de curso en C, no os penseis k tiene k ser algo grande pero, tiene k tener "ficheros" es decir, guardar informacion y luego poder cargarla.

Nos a dixo k hagamos juegos o cosas asi, yo e pensao hacer un jueguecito y tal, usando todos tipo de cosas pero como ya e dixo, nada k sea de nivel ams avanzado k "ficheros" puedo usar arrays, cadenas, strucs, punteros... y cosas mas basicas.

Me gustaria saber si habeis exo algun jueguecito asi y si em lso podriais pasar/enseñar para ojearles.

Tengo mas o menos pensado hacer un jueguecito de lucha y tal, pero estoy abierto a nuevas ideas.

Un saludo.
¿Alguien sabe alguna función que lea de stdin, pero que no se pare, es decir, que sólo lea si se ha tecleado, si no que me devuelva error?

Es que no encuentro ninguna en la librería stdio.

Un saludo y gracias.
Jaime escribió:¿Alguien sabe alguna función que lea de stdin, pero que no se pare, es decir, que sólo lea si se ha tecleado, si no que me devuelva error?

Es que no encuentro ninguna en la librería stdio.

Un saludo y gracias.
.

"kbhit" te responde si ha sido pulsada una tecla o no.
Jaime escribió:¿Alguien sabe alguna función que lea de stdin, pero que no se pare, es decir, que sólo lea si se ha tecleado, si no que me devuelva error?

Es que no encuentro ninguna en la librería stdio.

Un saludo y gracias.
.

"kbhit" te responde si ha sido pulsada una tecla o no.
Genzai Kawakami escribió:.

"kbhit" te responde si ha sido pulsada una tecla o no.


No es ANSI C, está en una librería de Borland, además yo uso Linux así que no me funciona, gracias de todas formas.

Un saludo.
En la biblioteca estandar no la hay, tendrás que buscar en bibliotecas externas.
Veamos, tengo que consultar la memoria de mi ordenador para uh trabajillo de clase.
La cuestion sq tengo ke hacerlo con un número en float y para otro en double.

La forma que se me ha ocurrido de hacerlo es la siguiente:

float x;
double y;
int *simple;
long long int *doble;


simple = &x;
doble = &y;

El prblema es que al hacer un printf("%x", simple) ; lo hace de maravilla y me muestra toda la memoria (32 bits).
Sin embargo al acer un printf %lx para el double solo me muestra los últimos 32 bits de la memoria.

Alguna idea? o solución?

Gracias [bye]
Batousay escribió:Veamos, tengo que consultar la memoria de mi ordenador para uh trabajillo de clase.
La cuestion sq tengo ke hacerlo con un número en float y para otro en double.

La forma que se me ha ocurrido de hacerlo es la siguiente:

float x;
double y;
int *simple;
long long int *doble;


simple = &x;
doble = &y;

El prblema es que al hacer un printf("%x", simple) ; lo hace de maravilla y me muestra toda la memoria (32 bits).
Sin embargo al acer un printf %lx para el double solo me muestra los últimos 32 bits de la memoria.

Alguna idea? o solución?

Gracias [bye]


¿ Y si colocas printf ("%lf") o ("%LF") ?
Batousay escribió:Veamos, tengo que consultar la memoria de mi ordenador para uh trabajillo de clase.
La cuestion sq tengo ke hacerlo con un número en float y para otro en double.

La forma que se me ha ocurrido de hacerlo es la siguiente:

float x;
double y;
int *simple;
long long int *doble;


simple = &x;
doble = &y;

El prblema es que al hacer un printf("%x", simple) ; lo hace de maravilla y me muestra toda la memoria (32 bits).
Sin embargo al acer un printf %lx para el double solo me muestra los últimos 32 bits de la memoria.

Alguna idea? o solución?

Gracias [bye]


¿ Y si colocas printf ("%lf") o ("%LF") ?
Esto... vaya... toy atontao.. se me ha olvidao decir ke lo tengo ke imprimir por pantalla en hexadecimal.

En realidad se trata de un programa al que le introduces un número real por teclado y te devuelve su representación tanto en simple como en doble precisión en ieee754... y para verificar que los resultados estan bien hay que comprobarlo directamente en la memoria del ordenador...

y claro... con unos y ceros es un poco rollo así ke me he decidido a hacerlo en hexadecimal....

Gracias! [bye]
Una preguntilla, tengo que hacer una práctica con C#, más bien tengo que hacer un programa de dibujo con C#; no tendrá alguien algo parecido que pueda pasarme? o ayudarme?

Lo básico ya está implementado, lineas, rectas,etc.
Me falta que imprima, vista preliminar, y un largo etc.

Lo necesito xq estoy mas bien flojo en este tema y necesito ayuda.

salu2
Batousay escribió:Esto... vaya... toy atontao.. se me ha olvidao decir ke lo tengo ke imprimir por pantalla en hexadecimal.

En realidad se trata de un programa al que le introduces un número real por teclado y te devuelve su representación tanto en simple como en doble precisión en ieee754... y para verificar que los resultados estan bien hay que comprobarlo directamente en la memoria del ordenador...

y claro... con unos y ceros es un poco rollo así ke me he decidido a hacerlo en hexadecimal....

Gracias! [bye]

Yo hice ese programa hace tiempo... no está muy optimizado (nada) y seguro que se puede mejorar, te pego la función:
   int IEEE754_32bits(float nombre) {
      int i=0,max_bits_enter,max_bits_decimal,exponent,part_entera;
      float part_decimal;
      int IEEE754[32];
      int mantissa[23];
      int exp[8];
      if (nombre>0) {
         part_entera=floor(nombre);
         part_decimal=nombre-part_entera;
      }
      else {
         part_entera=abs(ceil(nombre));
         part_decimal=-(nombre+part_entera);
      }
      printf("%d i %f\n",part_entera,part_decimal);
      max_bits_enter=ceil(log10(part_entera)/log10(2));
      int enter[max_bits_enter];
      for (i=0;i<max_bits_enter;i++) { //part entera
         enter[max_bits_enter-i-1]=part_entera%2;
         part_entera=part_entera/2;   
      }
      max_bits_decimal=24-max_bits_enter; //son els bits que utilitzarem pels decimals.
      int decimal[max_bits_decimal];
      for (i=0;i<max_bits_decimal;i++) { //part decimal
         part_decimal*=2.0;
         decimal[i]=(int)floor(part_decimal);
         part_decimal-=decimal[i];   
      }
      printf("Part entera(%d bits)\t(1.)",max_bits_enter);
      for(i=1;i<max_bits_enter;i++) printf("%d",enter[i]); //part entera
      printf("\nPart decimal(%d bits): \t",max_bits_decimal);
      max_bits_enter--;
      for(i=0;i<max_bits_decimal;i++) { printf("%d",decimal[i]); } //part decimal
      exponent=127+max_bits_enter;
      for (i=7;i>=0;i--){
         exp[i]=exponent%2;
         exponent=exponent/2;
      }
      printf("\nExponent:\t\t");
      for(i=0;i<8;i++) printf("%d",exp[i]);
      if (nombre>=0) IEEE754[0]=0;
      else IEEE754[0]=1;
      int actual=1;
      for (i=0;i<8;i++) IEEE754[actual+i]=exp[i];
      actual=9;
      for (i=0;i<max_bits_enter;i++) IEEE754[actual+i]=enter[i+1];
      actual=9+max_bits_enter;
      for (i=0;i<(23-max_bits_enter);i++) IEEE754[actual+i]=decimal[i];
      printf("\nNombre:\t\t\t");
      for(i=0;i<32;i++) printf("%d",IEEE754[i]);
   
      char a[16]="0123456789ABCDEF";
      char sortida[8];
      int posicio,posicio_b;
     //printf("\n0x");
      for (i=0;i<8;i++) {
         posicio_b=0;
         for (posicio=0;posicio<4;posicio++) {
            posicio_b+=IEEE754[i*4+posicio]*((int)pow(2,3-posicio));
         }
         sortida[i]=a[posicio_b];
      }
      printf("\n\n\nNombre: 0x");
      for(i=0;i<8;i++) printf("%c",sortida[i]);     
      return 0;
   }


Es para la versión 32bits, para la de 64, cambiando un par de cosas, diria que hay bastante..
Espero que te sirva [ginyo]

Edito: Hay mucha parte que se puede eliminar, porque va mostrando los valores de cada array..
De librerías necesitas math.h y stdio.h
[bye]
Edito2: En linux no sé porque, pero no me compila... en devcpp va de perlas.
Me da a mí que llegué tarde.. [+risas]
eTc_84 escribió:Me da a mí que llegué tarde.. [+risas]


XD, pos si... ya lo acabé, presenté el trabajillo y me han puesto un 1 (sobre uno, claro.. XD).

Pero muchas gracias, ahora miraré el codigo a ver como lo hiciste, que siempre hay curiosidad.. je,je,je.

[bye]

P.D: Adjunto el código del programa que he hecho yo, funciona tanto en windows como en linux... y está totalmente comentado.

(por cierto, los que odien las cadenas de carácteres... mejor que no lo lean... XD)

Adjuntos

Batousay escribió:
XD, pos si... ya lo acabé, presenté el trabajillo y me han puesto un 1 (sobre uno, claro.. XD).

Pero muchas gracias, ahora miraré el codigo a ver como lo hiciste, que siempre hay curiosidad.. je,je,je.

[bye]

P.D: Adjunto el código del programa que he hecho yo, funciona tanto en windows como en linux... y está totalmente comentado.

(por cierto, los que odien las cadenas de carácteres... mejor que no lo lean... XD)

Hombre.. el tuyo es bastante más completo, el mío solo representa en IEEE754 precisión simple el valor de un float.. [ayay]
Bonito bonito :P
poseiido escribió:Una preguntilla, tengo que hacer una práctica con C#, más bien tengo que hacer un programa de dibujo con C#; no tendrá alguien algo parecido que pueda pasarme? o ayudarme?

Lo básico ya está implementado, lineas, rectas,etc.
Me falta que imprima, vista preliminar, y un largo etc.

Lo necesito xq estoy mas bien flojo en este tema y necesito ayuda.

salu2



Este hilo es para C y C++ aun asi estoy pensando en eso que dices porque tb estudio C#

Un saludo.
Fox y demas eolianos, a ver si podeis sacar algo para poseiido, yo lo estoy intentando, pero nose, la cosa de imprimir y demas como que no lo veo claro

Vamos a ayudarle, igual que los mosqueteros, uno par todos y todos para uno, aunq eso si poseiido, esto es de C++ o C

un saludin
288 respuestas
1, 2, 3, 4, 5, 6