Nuevas NORMAS para el foro

Curso Hacker
Bienvenido(a), Visitante. Favor de ingresar o registrarse. - Mayo 16, 2008, 01:38:35
Boton Buscar
Inicio Ayuda Calendario Ingresar Registrarse
Visita: Articulos - Juegos Gratis - Da Foros

Comunidad Underground Hispana  |  Programacion  |  Programación  |  Carbide C/C#/C++  |  Tema: Ayuda, C++ 0 Usuarios y 1 Visitante están viendo este tema. « anterior próximo »
Páginas: [1] Ir Abajo Imprimir
Autor Tema: Ayuda, C++  (Leído 150 veces)
.::MDavidMR::.
Colaborador
*****
Desconectado Desconectado

Mensajes: 464


moy.david@live.com
Ver Perfil Email
« en: Marzo 21, 2008, 02:09:09 »

Hola a todos, recien estoy aprendiendo a usar el C++ en la escuela, nos dejaron hacer unos ejercicios sencillos, jejeje ese los hize sin problemas, me adelanté con las condicionales y pues me quedé en un tercer ejercicio, les agradecería mucho si me ayudaran para hacerlo, aprendería un poco mas Smiley, y pues estoy metiendome en terreno desconocido pero... la profa tiene la culpa jejeje, no nos da muchas clases Tongue, bien, es el siguiente:



/*Hacer un algoritmo que imprima el nombre de un articulo, clave, precio
 original y su precio con descuento. El descuento lo hace en base a la
 clave, si la clave es 01 el descuento es del 10% y si la clave es 02
 el descuento es del 20% (Solo existen dos claves...*/

#include<stdio.h>
#include<conio.h>
#include<string.h>
void main()
{
   char clave[2],nomart[15];
   float preorig,predesc;
   clrscr();
   printf("Escriba la clave del artivulo...");
   gets(clave);
   if (strcpy(clave, "01")) !! (strcpy(clave, "02"));
      printf("\nEscriba el nombre del articulo... ");
      gets(nomart);
      printf("\nEscriba el precio original del articulo... $ ");
      if (strcpy(clave, "01"))
      {
         predesc=preorig*.9;
         printf("\nNombre del Articulo  ||  %c",nomart);
         printf("\nClave                ||  %c",clave);
         printf("\nPrecio Original      ||$ %.2f",preorig);
         printf("\nPrecio con Descuento ||$ %.2f",predesc);
      }
      if (strcpy(clave, "02"))
      {
         predesc=preorig*.9;
         printf("\nNombre del Articulo  ||  %c",nomart);
         printf("\nClave                ||  %c",clave);
         printf("\nPrecio Original      ||$ %.2f",preorig);
         printf("\nPrecio con Descuento ||$ %.2f",predesc);
      }
   else
      printf("Escriba solo las opciones '01' y '02'... ");
   getche();
}



No se que me sale mal, pero evalua todos los if Sad, y en la clave me pone un caracter raro Sad.

Help me please Sad

Saludos
MDavidMR
En línea

Nada es Verdad, Nada es mentira... Todo depende del cristal con que se mira...




cuervocap
Miembro
*****
Desconectado Desconectado

Mensajes: 54



Ver Perfil
« Respuesta #1 en: Marzo 22, 2008, 04:54:22 »

Oye sera que puedes poner  el problema que te tira, asi sera mas facil ayudarte.
salu2
En línea
FreakMind
Habitual
*****
Desconectado Desconectado

Mensajes: 177



Ver Perfil
« Respuesta #2 en: Marzo 22, 2008, 07:05:39 »

Buenas

Dejo un par de pistas:

- Claves: "01" y "02"
- Variable que contiene las claves: char clave[2]
- Funcion que usa para "comparar" las cadenas: strcpy()

Saludos, FreakMind
En línea

Connoisseurs of C semantics find C++ inferior to ++C

.::MDavidMR::.
Colaborador
*****
Desconectado Desconectado

Mensajes: 464


moy.david@live.com
Ver Perfil Email
« Respuesta #3 en: Marzo 24, 2008, 08:34:50 »

Hola ^^! Gracias por responder... Jeje acabo de tomar la pc ahorita ",

Oye sera que puedes poner  el problema que te tira, asi sera mas facil ayudarte.
salu2

Cuervocap El problema es

Citar
/*Hacer un algoritmo que imprima el nombre de un articulo, clave, precio
 original y su precio con descuento. El descuento lo hace en base a la
 clave, si la clave es 01 el descuento es del 10% y si la clave es 02
 el descuento es del 20% (Solo existen dos claves...*/

ҒrεακΜιи∂ La vdd no entiendo muy bien... la funcion stcrpy() la encontré en una pag., segun decían que servía para comparar caracteres o cadenas, pero... no tngo idea si la estoy usando bien, ahorita investigaré un poco mas de esa funcion, graxx SmileySmiley

Saludos
MDavidMR

Buenas

Dejo un par de pistas:

- Claves: "01" y "02"
- Variable que contiene las claves: char clave[2]
- Funcion que usa para "comparar" las cadenas: strcpy()

Saludos, FreakMind

En línea

Nada es Verdad, Nada es mentira... Todo depende del cristal con que se mira...




FreakMind
Habitual
*****
Desconectado Desconectado

Mensajes: 177



Ver Perfil
« Respuesta #4 en: Marzo 25, 2008, 11:15:31 »

Buenas

Cuervocap El problema es

Citar
/*Hacer un algoritmo que imprima el nombre de un articulo, clave, precio
 original y su precio con descuento. El descuento lo hace en base a la
 clave, si la clave es 01 el descuento es del 10% y si la clave es 02
 el descuento es del 20% (Solo existen dos claves...*/
.::MDavidMR::. , creo que cuervocap preguntaba si te tira algun error al ejecutar el programa. De todas formas con leer las primeras lineas de codigo uno se da cuenta que esta mal.

ҒrεακΜιи∂ La vdd no entiendo muy bien... la funcion stcrpy() la encontré en una pag., segun decían que servía para comparar caracteres o cadenas, pero... no tngo idea si la estoy usando bien, ahorita investigaré un poco mas de esa funcion, graxx SmileySmiley
La funcion la estas utilizando bien, el problema es que la funcion no es la que queres usar. Y te recomiendo que cambies de pagina Tongue

Mi consejo:
   Lo ideal seria comprarte un buen libro. A mi gusto el mejor es
Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
El Lenguaje de programacion C
de Ritchie (el creador del lenguaje). Ahi un miembro dejo un link. No se si todavia funcionara. Sino lo buscas en el foro o en internet
   Si no queres un libro y te conformas con tutos, el conclase.net es el mas famoso de todos

Saludos, FreakMind
En línea

Connoisseurs of C semantics find C++ inferior to ++C

.::MDavidMR::.
Colaborador
*****
Desconectado Desconectado

Mensajes: 464


moy.david@live.com
Ver Perfil Email
« Respuesta #5 en: Marzo 25, 2008, 01:26:05 »

Graxx, Ahorita empiezo a buscar Jejeje, Gracias a todos !! Cheesy

Saludos
MDavidMR
En línea

Nada es Verdad, Nada es mentira... Todo depende del cristal con que se mira...




.::MDavidMR::.
Colaborador
*****
Desconectado Desconectado

Mensajes: 464


moy.david@live.com
Ver Perfil Email
« Respuesta #6 en: Abril 06, 2008, 06:30:12 »

Hola, no había tenido tiempo para seguir con este codigo jejeje pero ya lo tengo listo y funciona Cheesy

Es el siguiente:

/*Hacer un algoritmo que imprima el nombre de un articulo, clave, precio
 original y su precio con descuento. El descuento lo hace en base a la
 clave, si la clave es 01 el descuento es del 10% y si la clave es 02
 el descuento es del 20%. Solo existen dos claves...*/

#include<stdio.h>
#include<conio.h>
#include<string.h>
void main()
{
   char clave[4], nomart[15];
   float preorig, predesc;
   clrscr();
   printf("Escriba la clave del articulo, '01' o '02'... ");
   gets(clave);
   if (strcmp(clave,"01")==0)
   {
      printf("\nEscriba el nombre del articulo... ");
      gets(nomart);
      printf("\nEscriba el precio original del articulo... $ ");
      scanf("%f",&preorig);
      predesc=preorig*.9;
      printf("\n\n\n\n\nNombre del Articulo:      %s",nomart);
      printf("\nClave:                    %s",clave);
      printf("\nPrecio Original:        $ %.2f",preorig);
      printf("\nPrecio con Descuento:   $ %.2f",predesc);
   }
   else if (strcmp(clave,"02")==0)
      {
      printf("\nEscriba el nombre del articulo... ");
      gets(nomart);
      printf("\nEscriba el precio original del articulo... $ ");
      scanf("%f",&preorig);
      predesc=preorig*.8;
      printf("\n\n\n\n\nNombre del Articulo:      %s",nomart);
      printf("\nClave:                    %s",clave);
      printf("\nPrecio Original:        $ %.2f",preorig);
      printf("\nPrecio con Descuento:   $ %.2f",predesc);
      }
      else
      printf("\nEscriba solo las opciones '01' y '02'... ");
   gotoxy(14,33);
   printf("By MDavidMR, Presione una tecla para salir...");
   getche();
}

Les agradecería mucho si me dieran opiniones y críticas, es bueno para el aprendizaje.

Saludos
.::MDavidMR::.
En línea

Nada es Verdad, Nada es mentira... Todo depende del cristal con que se mira...




lann
Habitual
*****
Desconectado Desconectado

Mensajes: 292


maamamma

migue1990@gmail.com
Ver Perfil Email
« Respuesta #7 en: Abril 07, 2008, 08:39:59 »

char *strcpy( char *s1, const char *s2 );
 
Lo que hace strcpy es copiar la cadena s2 ala cadena s1, y la cadena s1 es regresada, no sirve mucho para tus fines.

int strcmp( const char *s1, const char *s2 );
 
esta funcion compara la cadena s1 con la s2.
*regresa 0 si las cadenas son iguales.
*regresa valor negativo si la cadena s1 es menor a s2.
*regresa mayor a 0 si s1 es mayor a s2

algo mejor para obtener lo que quieres.

Algunos comentarios: dices que aprendes C++ pero estas usando funciones de entrada/salida estandar de C, podias cambiar gets por otra funcion mas segura ya que facilmente te pasaras de los limites de el array "clave", creo que puedes poner "escriba el nombre", y el precio original afuera de esos if ya que se repiten en las 2 condiciones, igual se van a imprimir, amenos que no quieras imprimir eso, cuando se pone una clave erronea, una recomendacion es que no uses conio ( amenos de que esten trabajando con el y pues en su defecto te pidan programas escritos con funciones de conio ) ya que no es una libreria estandar (obvio en la vida usaras muchisimas librerias no estandar pero uso este argumento de que "no es estandar" especialmente para tu codigo y codigos que desarrolles que  las funciones de conio las puedes reemplazar con funciones std, como getch() por getchar(), etc. ), es obsoleta*, es de borland y facilmente puedes cambiar funciones de conio por funciones estandar de C++ o como veo en tu codigo de C... (andaba inspirado).

 
« Última modificación: Abril 07, 2008, 09:17:09 por lann » En línea

am
.::MDavidMR::.
Colaborador
*****
Desconectado Desconectado

Mensajes: 464


moy.david@live.com
Ver Perfil Email
« Respuesta #8 en: Abril 08, 2008, 04:35:25 »

lann Muchas gracias por tus comentarios Wink

Oye una pregunta, cual funcionaría mejor como lector de cadenas, un scanf o un gets?

Y pues mi intensión era hacer un if <sentencia1==0> o <sentencia2==0> para que cuando entraran los que cumplen la condicion solo hubiesen una vez estas lineas:

Citar
      printf("\nEscriba el nombre del articulo... ");
      gets(nomart);
      printf("\nEscriba el precio original del articulo... $ ");
      scanf("%f",&preorig);

Pero no me sale la evaluación >;( de hecho eso intenté hacer al principio, pero como no me salió pues se me ocurrió hacerlo así, y pues tambien es mi intensión de que cuando se ponga una clave erronea no pida articulo ni el precio original... Oye tus comentarios realmente me inspiraron a investigar mas, oye verdad que te refieres a que cambie las sentencias de C estandar de C++? De todos modos ya me puse a investigar Smiley

Gracias de nuevo,
.::MDavidMR::.
« Última modificación: Abril 08, 2008, 04:36:13 por .::MDavidMR::. » En línea

Nada es Verdad, Nada es mentira... Todo depende del cristal con que se mira...




lann
Habitual
*****
Desconectado Desconectado

Mensajes: 292


maamamma

migue1990@gmail.com
Ver Perfil Email
« Respuesta #9 en: Abril 08, 2008, 09:33:10 »

pues depende que uso le des, para lo que estas haciendo como no usas espacios pues igual puedes usar scanf, ( no recuerdo si scanf como cin

"...era hacer un if <sentencia1==0> o <sentencia2==0> para "
alomejor necesites algo como.
 if( sentencia1 == 0 ||  sentencia2 == 0 )
     //sera cierto si sentencia1 ó sentencia2 valen 0

if( sentencia1 == 0 && sentencia2 == 0 )
    //sera solamente cierto si y solamente si: sentencia1 y sentencia2 valen 0

y a lo que me refiero es que habias puesto que estas aprendiendo C++ pero en tus codigos veo solo
funciones estandar de C, puedes dejar esos printf y scanf pero a mi me gusta la IO std
 ( newflash!!: los objetos cout, cin, cerr ) de C++, no se por donde lei que eran mejores =p...

En línea

am
FreakMind
Habitual
*****
Desconectado Desconectado

Mensajes: 177



Ver Perfil
« Respuesta #10 en: Abril 08, 2008, 10:01:17 »

Buenas

y a lo que me refiero es que habias puesto que estas aprendiendo C++ pero en tus codigos veo solo
funciones estandar de C, puedes dejar esos printf y scanf pero a mi me gusta la IO std
 ( newflash!!: los objetos cout, cin, cerr ) de C++, no se por donde lei que eran mejores =p...
Creo que no es tanto que sean mejores sino que al tener sobrecargados los operadores << y >> no necesitas hacerte tanto quilombo por si es un int o un char, o una cadena (ademas no tiene problemas con el tema de las entradas de tamaño indefinido)

Saludos, FreakMind
En línea

Connoisseurs of C semantics find C++ inferior to ++C

lann
Habitual
*****
Desconectado Desconectado

Mensajes: 292


maamamma

migue1990@gmail.com
Ver Perfil Email
« Respuesta #11 en: Abril 08, 2008, 10:16:06 »

bueno... igual, creo que aqui fue donde lei eso.


Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
http://burks.bton.ac.uk/burks/language/cpp/cppfaq/inputout.htm



En línea

am
Páginas: [1] Ir Arriba Imprimir 
Comunidad Underground Hispana  |  Programacion  |  Programación  |  Carbide C/C#/C++  |  Tema: Ayuda, C++ « anterior próximo »
Ir a:  
Novedades, Dudas, Comentarios Y Sugerencias, Top 100, Off-Topic, Revista E-Zine, Revista E-Zine, Sistemas operativos libres. , HacK GeneraL, Phreaking, Bug y Exploits, Networking & Wireless, Overclocking, Refrigeracion y demas, Hardware, Electronica Y Robotica, Hack para newbies, Todo Messenger, Troyanos y virus, Programacion, Programacion para webmasters, Software, Cracks & Serialz, P2p, Bittorrent, Elinks, Diseño Grafico, Juegos PC, Mp3, Multimedia, Peliculas Divx, Juegos, Humor y Adultos. (Diversion), Paginas Webs Recomendadas, Videos,


Zona-Musical Juegos online Juego Gratis10 Solucion Hosting Videos De Musica 1juegogratis Dragonjar
Noticias
 Juegos De Coche juegos gratis online juegos Los Foros De Sexe Gratuit Sexo Duro Tierra Messenger Trucos
Ranking-Hits
Powered by SMF 1.1.5 | SMF © 2006-2007, Simple Machines LLC