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
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
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í:
#include <iostream>
using namespace std;//
void MostrarDatos(char N[], int E);
int main() {
char Nombre[30];
int Edad;
//Pedir nombre
cout << "Ingrese nombre su nombre: " <<endl;
cin >>Nombre;
cout << "Ingrese su edad: " << endl;
cin >> Edad;
for (int count = 0; count < 10; count++)
MostrarDatos(Nombre, Edad);
return 0;
}
void MostrarDatos(char N[], int E) {
cout << "Su nombre es: " << N << endl;
cout << "Usted tiene " << E << " años" << endl;
}
Saludos!
Se me adelantó diskontrol, pero bueno ;D
#include <iostream>
using namespace std;
void MostrarDatos(char * Nombre, unsigned int Edad)
{
cout << "Su nombre es: " << Nombre << endl;
cout << "Su edad es: " << Edad << endl;
}
int main(int argc, char * argv[])
{
char Nombre[30];
unsigned int Edad = 0;
cout << "Ingrese su nombre: ";
cin.get(Nombre, 29);
cout << "Ingresa tu edad: ";
cin >> Edad;
for (int i = 0; i < 10; i++)
MostrarDatos(Nombre, Edad);
return 0;
}
Saludos.
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 :)!
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
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)
./miprograma 10
Entonces aquí entra en funcionamiento el argc y argv.
int main (int argc, char* argv[]){
if (argc!=2) return 0; //argc indica el número de parámetros que le hemos
//pasado a la hora de ejecutarse, en este caso
//necesitamos comprobar que sean 2, pues queremos
//leer también el número que le pasamos, si no le
//pasamos el segundo parametro cerramos el programa
int n=atoi(argv[1]); //Copiamos el número recibido en la variable n.
//tenemos que usar atoi, o un cast, porque si no recuerdo mal
//, argv devuelve una cadena de caracteres, y tenemos
//que convertirlo en un entero.
Recuerda que argv[0] contiene el nombre del programa, por eso empiezo por argv[1]
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.
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:)
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.
Me aburro mucho... ;) Va en C
#include <stdio.h>
int mostrar (char *nom, int ed*)
{
printf ("\nNombre: %s", nom);
printf ("\nEdad: %d", ed);
return 0;
}
int main ()
{
char nombre [20]; unsigned int edad;
printf ("Introduzca su nombre: ");
fgets (nombre, 20, stdin);
printf ("Introduzca su edad: ");
scanf ("%d", edad);
printf ("\n");
mostrar (nombre, edad);
printf (" --- done ----\n\n");
return 0;
}
$ gcc -o code code.c
$ ./code
Introduzca su nombre: Sagrini
Introduzca su edad: 50
Nombre: Sagrini
Edad: 50
--- done ----
$
Un saludo. Sagrini
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?
Cita de: S3kh 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.
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
Sé que todo el mundo respondió, pero igual quiero aportar mi granito de arena ;D
Mira, te dejo el code listo y explicado ;) :
#include <iostream> //Es iostream sin .h porque es una libreria C++
char Nombre[30]; //Quito RetornoMD, no se usa
char Edad[2];
void MostrarDatos(char N, int E);
using namespace std; // Ya te lo han explicado, :)
int main() {
//Pedir nombre
cout << "Ingrese nombre su nombre: " <<endl;
cin >>Nombre;
cout << "Ingrese su edad: " << endl;
cin >> Edad;
for (int i=0; i<10; i++){ //se puede usar la misma variable para el for; i=0 -> hasta 9 (i<10) = 10 veces :)
MostrarDatos(Nombre, Edad);
}
return 0;
}
void MostrarDatos(char N, char E) {
cout << "Su nombre es: " << N << endl;
cout << "Usted tiene " << E << " años" << endl;
}
PD: No importa que sea un desastre, eres nuevo y nadie te juzga por ello. Todos hemos pasado por esa etapa, asi que, el que te culpe, es un novatoide troll :xD
Ah, y otra cosa: el error en tu for es que cuando usamos for, indicamos lo siguiente:
for(i=0; i<10; i++){/*aqui las sentencias*/} -> para(i que vale 0, repetimos la accion hasta que i valga 9 (i<10 -> i - menor que 10 -> 9), y, cada vez que se repita el bucle, aumentamos en 1 i (i++ -> i = i+1)).
Otra cosa para el for es que su sintaxis es esta:
for(algo,algo,algo){ (abrir llave) sentencias (cout, cin, etc) (cerrar llave) }
Espero que me hayas entendido ;)
Cita de: martin_poipon en 16 Julio 2011, 00:20 AM
Sé que todo el mundo respondió, pero igual quiero aportar mi granito de arena ;D
Mira, te dejo el code listo y explicado ;) :
#include <iostream> //Es iostream sin .h porque es una libreria C++
char Nombre[30]; //Quito RetornoMD, no se usa
char Edad[2];
void MostrarDatos(char N, int E);
using namespace std; // Ya te lo han explicado, :)
int main() {
//Pedir nombre
cout << "Ingrese nombre su nombre: " <<endl;
cin >>Nombre;
cout << "Ingrese su edad: " << endl;
cin >> Edad;
for (int i=0; i<10; i++){ //se puede usar la misma variable para el for; i=0 -> hasta 9 (i<10) = 10 veces :)
MostrarDatos(Nombre, Edad);
}
return 0;
}
void MostrarDatos(char N, char E) {
cout << "Su nombre es: " << N << endl;
cout << "Usted tiene " << E << " años" << endl;
}
PD: No importa que sea un desastre, eres nuevo y nadie te juzga por ello. Todos hemos pasado por esa etapa, asi que, el que te culpe, es un novatoide troll :xD
Ah, y otra cosa: el error en tu for es que cuando usamos for, indicamos lo siguiente:
for(i=0; i<10; i++){/*aqui las sentencias*/} -> para(i que vale 0, repetimos la accion hasta que i valga 9 (i<10 -> i - menor que 10 -> 9), y, cada vez que se repita el bucle, aumentamos en 1 i (i++ -> i = i+1)).
Otra cosa para el for es que su sintaxis es esta:
for(algo,algo,algo){ (abrir llave) sentencias (cout, cin, etc) (cerrar llave) }
Espero que me hayas entendido ;)
Entendido :D Ahora estoy leyendo mas temas, y me sirvió de mucho la ayuda :)
Muchas gracias a todos n.n