elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda [Programa SUPERBÁSICO, aprendiendo]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda [Programa SUPERBÁSICO, aprendiendo]  (Leído 6,355 veces)
S3kh

Desconectado Desconectado

Mensajes: 58


Ver Perfil
Ayuda [Programa SUPERBÁSICO, aprendiendo]
« en: 12 Julio 2011, 01:53 am »

Simplemente, leyendo un manual, y practicando de todas las maneras que se me ocurren, NO me sale un programa tan básico como este (El objetivo es pedir un nombre, un edad y mostrarlas. si, no tiene sentido, pero es para practicar). La idea es que para mostrarlos, llame a una funcion, y la idea es que lo haga 10 veces xD. En fin, me tira 500mil errores, y no llego a entender dónde me equivoco. Es mi primer programa que hago, asi que es un desastre seguramente, no se suiciden al verlo ni me insulten jaja.

Citar

#include <iostream.h>

char Nombre[30],RetornoMD;
char Edad[2];

void MostrarDatos(char N, int E);


int main() {
    //Pedir nombre
    cout << "Ingrese nombre su nombre: " <<endl;
    cin >>Nombre;
    cout << "Ingrese su edad: " << endl;
    cin >> Edad;
      for (int count = 1; count = 10; count = i++);
      MostrarDatos(Nombre, Edad);
    return 0;
 }
 
void MostrarDatos(char N, char E) {
     cout << "Su nombre es: " << N << endl;
     cout << "Usted tiene " << E << " años" << endl;
      }



Desde ya ES UN DESASTRE, pero es lo que intento. Y otra cosa, si la función es void, no tengo que poner el return, no?xD

Tengo 500mil errores, pero bueno n.n espero que un alma generosa me diga algún consejito n.n

Gracias de antemano n.n un abrazo.

USO DEV-C++ :P


« Última modificación: 12 Julio 2011, 01:57 am por S3kh » En línea

diskontrol

Desconectado Desconectado

Mensajes: 89


RAWR!


Ver Perfil
Re: Ayuda [Programa SUPERBÁSICO, aprendiendo]
« Respuesta #1 en: 12 Julio 2011, 02:41 am »

Buenas,

-No te recomiendo usar variables globales si no es necesario.
-La variable RetornoMD no es usada.
-En la declaración de la función las variables deben coincidir en tipo con las que le pases luego.
-Al usar cout y cin, debes usarlos como std::cout y std::cin, o si te da pereza poner
Código:
using namespace std;
-En el bucle for usas una variable no declarada (e innecesaria) también te recomiendo inicializar los índices a 0. Además si pones ";" tras el bucle for no incluyes ninguna instrucción en el mismo

Por lo que tu código quedaría más o menos así:

Código
  1. #include <iostream>
  2. using namespace std;//
  3.  
  4.  
  5. void MostrarDatos(char N[], int E);
  6.  
  7.  
  8. int main() {
  9.  char Nombre[30];
  10.  int Edad;
  11.  //Pedir nombre
  12.  cout << "Ingrese nombre su nombre: " <<endl;
  13.  cin >>Nombre;
  14.  cout << "Ingrese su edad: " << endl;
  15.  cin >> Edad;
  16.  for (int count = 0; count < 10; count++)
  17.    MostrarDatos(Nombre, Edad);
  18.  return 0;
  19. }
  20.  
  21. void MostrarDatos(char N[], int E) {
  22.  cout << "Su nombre es: " << N << endl;
  23.  cout << "Usted tiene " << E << " años" << endl;
  24. }

Saludos!


En línea

Siempre ten tus cosas cuando las necesites con @Dropbox. ¡Una cuenta de 2 GB es gratis! http://db.tt/YxRhsCI
Khronos14


Desconectado Desconectado

Mensajes: 443


A lie is a lie


Ver Perfil WWW
Re: Ayuda [Programa SUPERBÁSICO, aprendiendo]
« Respuesta #2 en: 12 Julio 2011, 02:44 am »

Se me adelantó diskontrol, pero bueno  ;D

Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. void MostrarDatos(char * Nombre, unsigned int Edad)
  6. {
  7. cout << "Su nombre es: " << Nombre << endl;
  8. cout << "Su edad es: " << Edad << endl;
  9. }
  10.  
  11. int main(int argc, char * argv[])
  12. {
  13. char Nombre[30];
  14. unsigned int Edad = 0;
  15.  
  16. cout << "Ingrese su nombre: ";
  17. cin.get(Nombre, 29);
  18. cout << "Ingresa tu edad: ";
  19. cin >> Edad;
  20.  
  21. for (int i = 0; i < 10; i++)
  22. MostrarDatos(Nombre, Edad);
  23.  
  24. return 0;
  25. }
  26.  

Saludos.
En línea

S3kh

Desconectado Desconectado

Mensajes: 58


Ver Perfil
Re: Ayuda [Programa SUPERBÁSICO, aprendiendo]
« Respuesta #3 en: 12 Julio 2011, 14:01 pm »

Ah, gracias a las 2. Este manual que estoy leyendo en ningún momento nombra eso de using namespace std ni nada por el estilo. Con razón no me funcionaba je...

Ahora, por lo que voy entendiendo, Diskontrol:

Si yo hago el prototipo de una función y su declaración, y en sus parámetros va a recibir una cadena, tengo que poner los  [ ] también? Ahora voy a buscar algo de info sobre eso de std::cout, std::cin.

Y Khronos14, hay algo en lo que me confundí, según el material que estoy leyendo primero se definen los prototipos de función, y luego de la función main, recién la definición de dichas funciones. Es posible también definirlas sin declarar eso de prototipo? Es decir, yo hasta ahora tenía entendido que primero se declaraba el prototipo, después la función main, y después las funciones ya definidas.

 Por otro lado, en qué se diferencia poner usigned int a int? Digamos, tengo entendido que eso quiere decir "sin signo", pero, cuál es el fin, en qué afecta? Hay cosas que estoy leyendo en varios manuales, y sigo sin entender la utilidad de signed-unsigned. Je.
 Luego, "char * Nombre" en los parámetros de MostrarDatos, qué sería exactamente? Digamos, por qué el asterisco? TEngo una idea muy vaga de lo que pueda ser, ahora voy a ver si puedo encontrar algo.
 Y última duda, argc, char * argv[]... Ahí si que no tengo idea de que es jaja

Ahora igual voy a ver si puedo encontrar mas info y demás :) Pero si me pueden aclarar esas duditas lo agradecería mucho :P Sobre todo la utilidad y necesidad de Signed-Unsigned.
çMuchas gracias a ambos por las respuestas y la ayuda :)!
En línea

Acermax

Desconectado Desconectado

Mensajes: 55


Ver Perfil
Re: Ayuda [Programa SUPERBÁSICO, aprendiendo]
« Respuesta #4 en: 12 Julio 2011, 14:26 pm »

Si, en la declaración tienes que poner [] o en su defecto *. En cuanto llegues a la parte de punteros lo comprenderas... Una cadena no deja de ser un puntero al primer elemento, asi que por eso funciona de ambas maneras.

En cuanto a lo de std::cout y tal, para buscar información, pon en google "espacio de nombres c++" o algo así. No es algo complejo ni mucho menos.

Respecto al prototipo de la función. Yo prefiero declarar arriba el prototipo como dices, y abajo realizarla, porque así sale todo más ordenado (desde mi punto de vista).

La diferencia entre int y unsigned int es eso que dices, que el unsigned no puede tomar valores negativos. Si vas a utilizar una variable que no puede usar valores negartivos (como la edad) está bien utilizarla como unsigned, pero bueno, por costumbre, porque en este caso no importaría demasiado. Básicamente se diferencian en su rango de representación.
unsigned int 32 bits 0 a 4,294,967,295
int 32 bits -2,147,483,648 a 2,147,483,647
Como ves el unsigned puede representar exactamente el doble de números positivos.

Y respecto al argc y argv[]... Eso se usa para pasarle datos al programa a la hora de ejecutarlo, me intentaré explicar.
Cuando ejecutas el programa desde el CMD o desde la consola, lo haces de la siguiente manera
Código:
miprograma.exe           o            ./miprograma

Pero imagina que además, a la hora de llamarlo quieres indicarle algo más, como por ejemplo un número (podría ser lo que quieras, 2 ficheros, más números o lo que sea)

Código:
./miprograma 10

Entonces aquí entra en funcionamiento el argc y argv.

Código
  1. int main (int argc, char* argv[]){
  2.     if (argc!=2) return 0;    //argc indica el número de parámetros que le hemos
  3.                                       //pasado a la hora de ejecutarse, en este caso
  4.                                       //necesitamos comprobar que sean 2, pues queremos
  5.                                       //leer también el número que le pasamos, si no le
  6.                                       //pasamos el segundo parametro cerramos el programa
  7.    int n=atoi(argv[1]);      //Copiamos el número recibido en la variable n.
  8.                                      //tenemos que usar atoi, o un cast, porque si no recuerdo mal
  9.                                     //, argv devuelve una cadena de caracteres, y tenemos
  10.                                     //que convertirlo en un entero.
  11.  
  12.  
Recuerda que argv[0] contiene el nombre del programa, por eso empiezo por argv[1]
En línea

Khronos14


Desconectado Desconectado

Mensajes: 443


A lie is a lie


Ver Perfil WWW
Re: Ayuda [Programa SUPERBÁSICO, aprendiendo]
« Respuesta #5 en: 12 Julio 2011, 15:34 pm »

Yo el main siempre lo pongo abajo de todo, además no declaro los prototipos de las funciones, prefiero ordenar las funciones según se van llamando, aunque para gustos colores.

Para aprender C++ solo te hace falta dedicación, porque es el lenguaje de programación más documentado de toda la red.

Saludos.
En línea

S3kh

Desconectado Desconectado

Mensajes: 58


Ver Perfil
Re: Ayuda [Programa SUPERBÁSICO, aprendiendo]
« Respuesta #6 en: 12 Julio 2011, 18:59 pm »

Genial, ya entendí mucho mejor las cosas. Ya estoy haciendo programitas muy simples. je... Muchas gracias a todos los que respondieron y ayudaron :) Muchísimas gracias:)
En línea

albertini851204

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Ayuda [Programa SUPERBÁSICO, aprendiendo]
« Respuesta #7 en: 14 Julio 2011, 16:15 pm »

holaaaaa mi nombre es aliuska y necesito me ayuden a responder este programa
es para una prueba final .

Boleta No. 10
En una cooperativa agrícola de viandas se poseen los datos correspondientes al ciclo productivo terminado en una época del año. Cada uno de los cooperativistas  atendió todo el ciclo en la siembra de un solo tipo de viandas la cual podía ser papa, boniato o yuca. Se conoce la cantidad de caballerías sembradas por cada cooperativista y la producción obtenida.

Se conoce la norma de producción que debe rendir una caballería en cada tipo de vianda.
 
Hacer un programa en C++ para:
a)   Conocer cuál fue el cooperativista que mejor eficiencia obtuvo en cada tipo de cultivo.
b)   Conocer la producción total de la cooperativa por cada tipo de vianda y la cantidad de cooperativistas cuya producción fue menor que la norma en cada tipo de vianda.

En línea

Died

Desconectado Desconectado

Mensajes: 32


Ver Perfil
Re: Ayuda [Programa SUPERBÁSICO, aprendiendo]
« Respuesta #8 en: 14 Julio 2011, 16:55 pm »

Me aburro mucho... ;) Va en C

Código
  1. #include <stdio.h>
  2.  
  3. int mostrar (char *nom, int ed*)
  4. {
  5. printf ("\nNombre: %s", nom);
  6. printf ("\nEdad: %d", ed);
  7.  
  8. return 0;
  9. }
  10.  
  11. int main ()
  12. {
  13. char nombre [20]; unsigned int edad;
  14.  
  15. printf ("Introduzca su nombre: ");
  16. fgets (nombre, 20, stdin);
  17. printf ("Introduzca su edad: ");
  18. scanf ("%d", edad);
  19.  
  20. printf ("\n");
  21. mostrar (nombre, edad);
  22.  
  23. printf (" --- done ----\n\n");
  24. return 0;
  25. }
  26.  
Código:
$ gcc -o code code.c
$ ./code
Introduzca su nombre: Sagrini
Introduzca su edad: 50

Nombre: Sagrini
Edad: 50
--- done ----

$

Un saludo. Sagrini
En línea

S3kh

Desconectado Desconectado

Mensajes: 58


Ver Perfil
Re: Ayuda [Programa SUPERBÁSICO, aprendiendo]
« Respuesta #9 en: 15 Julio 2011, 00:10 am »

Claro, esa es usando stdio y printf. Justo estaba leyendo sobre eso. Je.

Otra dudita, supongamos que yo NO no quiera sumar dos números, si no que quiera trabajar con los números que sean, digamos, si el usuario quiere pasar 25 números, o si quiere pasar 2, como se define la función?
Es decir, yo pongo

tipo funcion(param1, param2... etc);

Ahora bien, si yo NO sé cuántos parámetros va a recibir? Cómo sería? O me estoy metiendo en tema mas avanzado?
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines