Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: -MicrO- en 26 Junio 2011, 19:03 pm



Título: Programa para Llevar de TB a GB,MB,KB...
Publicado por: -MicrO- en 26 Junio 2011, 19:03 pm
Hola a todos :D no soy nuevo en el foro por que me registre hace quien sabe cuanto xD. pero si es primera vez que posteo... estoy estudiando programacion y ya nos estan metiendo C++ pero hasta ahora empezando asi que soy noob en esto todavia  :xD

Para clases el professor pidio un programa para llevar de TB a GB,MB,KB...

y pues yo lo tengo asi:

Código:
#include <stdio.h>
#include <stdlib.h>
main()
{
int tb,gb,mb,kb,bytes;
printf("----> Programa Para Llevar de TB a GB,MB,KB,Bytes <---- \n");
printf("\n");
printf("Introduzca La Cantidad de TB: \n");
scanf("%d",&tb);
gb=tb*1024;
mb=gb*1024;
kb=mb*1024;
bytes=kb*1024;

printf("El Resultado en GB es= %d  \n",gb);
printf("El Resultado en MB es= %d  \n",mb);
printf("El Resultado en KB es= %f \n",kb);
printf("El Resultado en Bytes es= %f \n",bytes);
printf("\n");
system ("pause");
return 0;

}

El programa me da el resultado en GB y Mb pero KB y Bytes no me da, estoy casi seguro que es el "%f" pero no se por cual cambiar, recordar que ando empezando en esto  :¬¬

Aja el programa esta con prinft, scanft... asi nos enseño la profesora antigua, ahora el nuevo viene a decir que empezemos a usar :"#include <iostream>" y  el cout entre otros, que opinan de esto no es lo mismo?

Salu2 y Gracias  ;D


Título: Re: Programa para Llevar de TB a GB,MB,KB...
Publicado por: тαптяα en 26 Junio 2011, 19:23 pm
Bueno esto es cosa que no te sabes los modificadores de la función printf..

te he puesto una especie de tabla donde esta el modificador y al lado la salida y un ejemplo..



specifier   Output   Example
c   Character   a
d or i   Signed decimal integer   392
e   Scientific notation (mantise/exponent) using e character   3.9265e+2
E   Scientific notation (mantise/exponent) using E character   3.9265E+2
f   Decimal floating point   392.65
g   Use the shorter of %e or %f   392.65
G   Use the shorter of %E or %f   392.65
o   Unsigned octal   610
s   String of characters   sample
u   Unsigned decimal integer   7235
x   Unsigned hexadecimal integer   7fa
X   Unsigned hexadecimal integer (capital letters)   7FA
p   Pointer address   B800:0000



PD: %i
PD2: si declaras el valor kb y bytes como entero(int) luego no puedes imprimirlo en consola como valor float... ¬¬


Título: Re: Programa para Llevar de TB a GB,MB,KB...
Publicado por: -MicrO- en 26 Junio 2011, 19:40 pm
Bueno esto es cosa que no te sabes los modificadores de la función printf..

te he puesto una especie de tabla donde esta el modificador y al lado la salida y un ejemplo..



specifier   Output   Example
c   Character   a
d or i   Signed decimal integer   392
e   Scientific notation (mantise/exponent) using e character   3.9265e+2
E   Scientific notation (mantise/exponent) using E character   3.9265E+2
f   Decimal floating point   392.65
g   Use the shorter of %e or %f   392.65
G   Use the shorter of %E or %f   392.65
o   Unsigned octal   610
s   String of characters   sample
u   Unsigned decimal integer   7235
x   Unsigned hexadecimal integer   7fa
X   Unsigned hexadecimal integer (capital letters)   7FA
p   Pointer address   B800:0000



PD: %i
PD2: si declaras el valor kb y bytes como entero(int) luego no puedes imprimirlo en consola como valor float... ¬¬

Gracias ハセヲ  ;D

Como te digo soy noob aun toy crudo y la mayoria de la gente de mi clase ni se diga, tienes razon lo de float... voy a intentar a ver y te cuento...

Te pregunto tambien sobre "#include <iostream>" y  el cout  que coloque arriba, como es mejor trabajar?

y que me aconsejas para aprender c++ bien  :rolleyes:

Salu2


Título: Re: Programa para Llevar de TB a GB,MB,KB...
Publicado por: тαптяα en 26 Junio 2011, 19:47 pm
Bueno pues realmente a estos niveles C y C++ es casi lo mismo..supongo que no tendrás problema en saber usar cout.

Ejemplo:
Código:
#include <iostream>
using namespace std;

int main ()
{
  int year;
  cout << "Introduce el año actual: ";
  cin >> year;
  cout << "Estamos en el " << year;
  return 0;
}

Y acostumbrate a no hacer funciones principales nulas..pues ahora no importa, pero para que retornas un valor numerico cuando has creado una función nula ¿?


Título: Re: Programa para Llevar de TB a GB,MB,KB...
Publicado por: Иōҳ en 26 Junio 2011, 19:56 pm
traducción:
él se refiere a esto
Citar
int main ()
{
//[..]
return 0
}

y tú lo pusistes
Citar
main()
{
//[..]
return 0
}

Nox  :-\


Título: Re: Programa para Llevar de TB a GB,MB,KB...
Publicado por: -MicrO- en 26 Junio 2011, 19:57 pm
Pues no es problema por que ya nos han explicado como es, y lo de las funciones nulas no entiendo a que te refieres, no se si es el "system ("pause");"

Si es eso lo usamos por que estamos trabajando en Visual C++ 6.0 y si no lo pones la ventana del programa se cierra inmediatamente luego de correr.

y como te digo soy noob xD. ando empezando... me estoy viendo los tutoriales:

http://foro.elhacker.net/programacion_cc/video_tutorial_programacion_c-t249577.0.html

para ir aprendiendo. :D

P.D: Esta fino tu blog :D
P.D2: En que trabajas tu C++?


Título: Re: Programa para Llevar de TB a GB,MB,KB...
Publicado por: тαптяα en 26 Junio 2011, 20:13 pm
Pues no es problema por que ya nos han explicado como es, y lo de las funciones nulas no entiendo a que te refieres, no se si es el "system ("pause");"

Si es eso lo usamos por que estamos trabajando en Visual C++ 6.0 y si no lo pones la ventana del programa se cierra inmediatamente luego de correr.

y como te digo soy noob xD. ando empezando... me estoy viendo los tutoriales:

http://foro.elhacker.net/programacion_cc/video_tutorial_programacion_c-t249577.0.html

para ir aprendiendo. :D

P.D: Esta fino tu blog :D
P.D2: En que trabajas tu C++?

main() = void main() eso es la función principal nula, en tu caso puedes usarlo, pero no es necesario que retornes ningún valor..

return sirve en las funciones para "retornar"(xdd) un valor y mediante una comprobación..usarlo para lo que sea.mmm tal que así..
Código:
declaraciones y toda la pescaa
...
int funcion1(int a){
aqui haces lo que tengas que hacer pero al final tu pones esto:
return a;
}

int main(){
y aqui puedes utilizar esa función y el valor 'a'
}

Citar
P.D2: En que trabajas tu C++?
Supongo que te refieres a IDE, CodeBlocks..


Título: Re: Programa para Llevar de TB a GB,MB,KB...
Publicado por: -MicrO- en 26 Junio 2011, 20:28 pm
Ah ya entendi...  ::)

Ok. Hice lo que me dijiste y lo puse asi:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <iostream>
  4. int main()
  5. {
  6. int tb,gb,mb;
  7. float kb,bytes;
  8. printf("----> Programa Para Llevar de TB a GB,MB,KB,Bytes <---- \n");
  9. printf("\n");
  10. printf("Introduzca La Cantidad de TB: \n");
  11. scanf("%d",&tb);
  12. gb=tb*1024;
  13. mb=gb*1024;
  14. kb=mb*1024;
  15. bytes=kb*1024;
  16.  
  17. printf("El Resultado en GB es= %d  \n",gb);
  18. printf("El Resultado en MB es= %d  \n",mb);
  19. printf("El Resultado en KB es= %f \n",kb);
  20. printf("El Resultado en Bytes es= %f \n",bytes);
  21. printf("\n");
  22. system ("pause");
  23. return 0;
  24.  
  25. }


Y corre pero asi:

(http://img101.imageshack.us/img101/6833/33375701.jpg)


Coloque los valores como float arriba

Ah y lo de que usas si es eso: pero yo uso es Windows y Visual C++ 6.0 es lo que trabajamos en la uni.   :huh:


Título: Re: Programa para Llevar de TB a GB,MB,KB...
Publicado por: тαптяα en 26 Junio 2011, 20:39 pm
Empezaré por abajo..

Visual C++ está bien..cuestión de gustos y de tiempo trabajando con el entorno..

Sigamos:

No pongas:

#include <iostream> si es un codigo en C, pues muchos compiladores si es un archivo.c no lo compilaran..

No pongas: system ("pause"); Hay un tema fijado en este subforo que te explica las razones.

Los valores de coma flotante(float) dan 0, porque estas multiplicando enteros por floats...como en tu escuela te habrán dicho, es como multiplicar peras y manzanas nose puede...

Un puntito aparte...los valores que van a tomar los KB y los bytes, se pasan del rango de los enteros..así que te recomiendo designar todos los valores como float..

Así con todo te quedaría algo así:

Código:
#include <stdio.h>
#include <stdlib.h>

int main()
{
float tb,gb,mb,kb,bytes;
printf("----> Programa Para Llevar de TB a GB,MB,KB,Bytes <---- \n");
printf("\n");
printf("Introduzca La Cantidad de TB: \n");
scanf("%f",&tb);
gb=tb*1024;
mb=gb*1024;
kb=mb*1024;
bytes=kb*1024;

printf("El Resultado en GB es= %f  \n",gb);
printf("El Resultado en MB es= %f  \n",mb);
printf("El Resultado en KB es= %f \n",kb);
printf("El Resultado en Bytes es= %f \n",bytes);
printf("\n");

return 0;

}


Título: Re: Programa para Llevar de TB a GB,MB,KB...
Publicado por: -MicrO- en 26 Junio 2011, 21:43 pm
Ok, pues si seguire con Visual C++

El "#include <iostream>" Disculpa se me fue eso es porque estaba cambiando el ejercicio con el cout.

El System pause como en el tema que es en el sub forum lo aprendi en la uni, y aunque es un mal abito, digamos que se usa por necesidad. yo lo coloco para poder ver el programa, si no el programa corre e instantamente se cierra no puedes ver nada, es error del Visual? o que es?

y con respecto al error de float, ya entendi ^^ todo tendria que ser float para que funcione  ;-)


Título: Re: Programa para Llevar de TB a GB,MB,KB...
Publicado por: тαптяα en 26 Junio 2011, 21:45 pm
Me alegro, que lo hayas entendido todo.

Cualquier otra cosa, preguntala.  ;D


Título: Re: Programa para Llevar de TB a GB,MB,KB...
Publicado por: BlackZeroX en 26 Junio 2011, 23:20 pm
.
Revisa la definicion de TeraByte ( 1TB = 1024 GB =  1048576 MB = 1073741824 kb = 1099511627776 bytes)

http://www.google.com/search?client=safari&rls=en&q=1+terbyte+a+bytes&ie=UTF-8&oe=UTF-8

Código
  1.  
  2. #include <stdio.h>
  3. int main() {
  4.    // multiplicacion 1024 de manera binaria ( Dezplazamiento de bits ).
  5.    int bytes  = 1;
  6.    fprintf(stdout,"El Resultado en GB es= %d  \n",bytes<<30);
  7.    fprintf(stdout,"El Resultado en MB es= %d  \n",bytes<<20);
  8.    fprintf(stdout,"El Resultado en KB es= %d \n",bytes<<10);
  9.    fprintf(stdout,"El Resultado en Bytes es= %d \n",bytes);
  10.    getchar();
  11.    return 0;
  12. }
  13.  
  14.  

temibles Lunas!¡.


Título: Re: Programa para Llevar de TB a GB,MB,KB...
Publicado por: тαптяα en 26 Junio 2011, 23:30 pm
.
Revisa la definicion de TeraByte ( 1TB = 1024 GB =  1048576 MB = 1073741824 kb = 1099511627776 bytes)

http://www.google.com/search?client=safari&rls=en&q=1+terbyte+a+bytes&ie=UTF-8&oe=UTF-8

Código
  1.  
  2. #include <stdio.h>
  3. int main() {
  4.    // multiplicacion 1024 de manera binaria ( Dezplazamiento de bits ).
  5.    int bytes  = 1;
  6.    fprintf(stdout,"El Resultado en GB es= %d  \n",bytes<<30);
  7.    fprintf(stdout,"El Resultado en MB es= %d  \n",bytes<<20);
  8.    fprintf(stdout,"El Resultado en KB es= %d \n",bytes<<10);
  9.    fprintf(stdout,"El Resultado en Bytes es= %d \n",bytes);
  10.    getchar();
  11.    return 0;
  12. }
  13.  
  14.  

temibles Lunas!¡.

muy bien campeón :)

y cuanto es 1024 * 1024 jajajajaja


Título: Re: Programa para Llevar de TB a GB,MB,KB...
Publicado por: leogtz en 27 Junio 2011, 00:40 am
Cuando la función main está como:

main()

está implicito que devuelve un int, no es void, para que sea void se tiene que especificar de manera explícita:

void main().

Los nuevos estándares creo que cuando se omite la sentencia return ellos automáticamente devuelven un 0.

Saludos.


Título: Re: Programa para Llevar de TB a GB,MB,KB...
Publicado por: BlackZeroX en 27 Junio 2011, 01:03 am
.
que idiota, no se en que demonios estaba pensando...

Código
  1.  
  2. #include <stdio.h>
  3. int main() {
  4.    float GBytes = 1024.0f
  5.    fprintf( stdout , "El Resultado en TB es= %.2f  \n" , GBytes/1024 );
  6.    fprintf( stdout , "El Resultado en MB es= %.2f  \n" , GBytes*1024);
  7.    fprintf( stdout , "El Resultado en KB es= %.2f  \n" , GBytes*1048576);
  8.    fprintf( stdout , "El Resultado en Bytes es= %.2f \n" , GBytes*1073741824);
  9.    getchar(  );
  10.    return 0;
  11. }
  12.  
  13.  

Dulces Lunas!¡.
.


Título: Re: Programa para Llevar de TB a GB,MB,KB...
Publicado por: тαптяα en 27 Junio 2011, 11:29 am
Cuando la función main está como:

main()

está implicito que devuelve un int, no es void, para que sea void se tiene que especificar de manera explícita:

void main().

Los nuevos estándares creo que cuando se omite la sentencia return ellos automáticamente devuelven un 0.

Saludos.
Pues nose donde leí que era al revés..pero bueno creo que tienes razón.


Título: Re: Programa para Llevar de TB a GB,MB,KB...
Publicado por: Queta en 27 Junio 2011, 12:19 pm
Citar
5.1.2.2.1 Program startup
1 The function called at program startup is named main. The implementation declares no
prototype for this function. It shall be defined with a return type of int and with no
parameters:
int main(void) { /* ... */ }
or with two parameters (referred to here as argc and argv, though any names may be
used, as they are local to the function in which they are declared):
int main(int argc, char *argv[]) { /* ... */ }
or equivalent;9) or in some other implementation-defined manner.
2 If they are declared, the parameters to the main function shall obey the following
constraints:
— The value of argc shall be nonnegative.
— argv[argc] shall be a null pointer.
— If the value of argc is greater than zero, the array members argv[0] through
argv[argc-1] inclusive shall contain pointers to strings, which are given
implementation-defined values by the host environment prior to program startup. The
intent is to supply to the program information determined prior to program startup
from elsewhere in the hosted environment. If the host environment is not capable of
supplying strings with letters in both uppercase and lowercase, the implementation
shall ensure that the strings are received in lowercase.
— If the value of argc is greater than zero, the string pointed to by argv[0]
represents the program name; argv[0][0] shall be the null character if the
program name is not available from the host environment. If the value of argc is
greater than one, the strings pointed to by argv[1] through argv[argc-1]
represent the program parameters.
— The parameters argc and argv and the strings pointed to by the argv array shall
be modifiable by the program, and retain their last-stored values between program
startup and program termination.

9) Thus, int can be replaced by a typedef name defined as int, or the type of argv can be written as
char ** argv, and so on.