PDA

Ver la Versión Completa : haciendo mi primer programa en c++




ancabi
15-feb-2005, 20:24
buenas, estoy aprendiendo c++ y necesito hacer un programa que me sume 10 numeros introducidos por teclado, me de el promedio y me de el mayo y menor, por ahora me estoy centrando en el promedio, el codigo es este:


#include <iostream>
using namespace std;

int main ()
{
int s;
s=0;
double promedio;
int numero[10];
int i;
int suma;
char resp[12];

for (i = 0; i < 10; i++)
{
cout << "introduce un numero entero "<<i<<": ";
cin >> numero[i];
s += numero[i];
}
{
double promedio = s /= i;
cout << "El promedio es: " << promedio;
cout << endl;
}


cout << numero << endl;
cout << "Desea entrar otros numeros?(s/n): ";
cin >> resp;

while(resp[0] == 's' || resp[0] == 's');
return 0;
}



me da el promedio pero redondeado, como puedo hacer para que me lo de con los decimales???

ademas abajo de promedio me larga este codigo:


0x22ff28


eso es un numero en hexadecimal? osea que esos sean los decimales? por que no entiendo de donde sale.

Saludos




clarinetista
15-feb-2005, 20:37
Yo creo que es porque todas las variables las pones como int, o sea de tipo entero.
Usa Tipo "float" o coma flotante

ancabi
15-feb-2005, 20:56
bien, muchas gracias clarinetista, tenias razon, ya me da el promedio con decimales. ya resolvi el problema del numero en hexadecimal, ahora mi unico proble es que cuando me hace la pregunta de si quiero volver a hacerlo se planta, osea queda titilando el cursor pero no vuleve a preguntarme los numeros, que puede ser :S

Saludos

clarinetista
16-feb-2005, 15:26
cout << numero << endl;
cout << "Desea entrar otros numeros?(s/n): ";
cin >> resp;

while(resp[0] == 's' || resp[0] == 's');
return 0;

Creo que el problema es la condicion del final, que has puesto repe.
Mira a ver eso

ancabi
17-feb-2005, 20:04
clarinetista cambie por otra letra la comparacion y sigue igual, ademas la puse con mayuscula a la s y sigue igual, pero eso ya no me importa, ahora estoy intentando que el programa te pregunte cuantos numeros queres poner en el programa, pero i toma el valor de z y te pide un solo numero y termina con la suma y el promedio, alguien sabe por que???



include <iostream>
using namespace std;

int main ()
{
double s;
s=0;
double promedio;
double numero[10];
int z;
z=0;
int i;
char resp[12];



{
cout << "cuantos numeros va a ingresar?: ";
cin >> z;
}

for (i = 0; i < z; i++);
{
cout << "introduce un numero entero "<<i<<" : ";
cin >> numero[i];
s += numero[i];
}

{
cout << "La suma es: " << s;
cout << endl;
}

{
double promedio = s / i;
cout << "El promedio es: " << promedio;
cout << endl;
}


cout << "Desea entrar otros numeros?(s/n): ";
cin >> resp;

while(resp[0] == 's' || resp[0] == 'S');
return 0;
}


Saludos

<PICCOLO>
17-feb-2005, 23:19
while(resp[0] == 's' || resp[0] == 'S'); //-->Este punto y coma sobra


Por otro lado, en realidad lo que te falla es el algoritmo.

el código fuente que debería funcionar es el siguiente:



include <iostream>
using namespace std;

int main ()
{
double s;
s=0;
double promedio;
double numero[10];
int z;
z=0;
int i;
char resp[12];
resp="s";
while(resp[0] == 's' || resp[0] == 'S')
{
cout << "cuantos numeros va a ingresar?: ";
cin >> z;
for (i = 0; i < z; i++);
{
cout << "introduce un numero entero "<<i<<" : ";
cin >> numero[i];
s += numero[i];
}
cout << "La suma es: " << s;
cout << endl;
double promedio = s / i;
cout << "El promedio es: " << promedio;
cout << endl;
cout << "Desea entrar otros numeros?(s/n): ";
cin >> resp;
}

return 0;
}

ancabi
19-feb-2005, 15:52
siento decirte que no funciono, por ej en lo de "resp="s"" me dice que es incompatible y despues se salta la pregunta de la cantidad de numeros por lo cual todo lo demas ya no funciona bien, la verdad que ya no entiendo el porque si el codigo a mi parecer esta perfecto :confused:, de todas formas gracias piccolo seguramente me servira para cuando le encuentre el error.

Saludos

<PICCOLO>
19-feb-2005, 16:53
El siguiente código me funciona correctamente, compilado desde anjuta. Los errores eran los siguientes:
He cambiado resp por el tipo char normal ya que no es una cadena, por lo que de esa forma ahorras memoria.
En el For tenías un punto y coma después del paréntesis.


#include <iostream.h>

int main ()

{
double s;
s=0;
double promedio;
double numero[10];
int z;
z=0;
int i;
char resp;
resp='s';
while(resp == 's' || resp == 'S')
{
cout << "cuantos numeros va a ingresar?: ";
cin >> z;
for (i = 0; i < z; i++)
{
cout << "introduce un numero entero "<<i<<" : ";
cin >> numero[i];
s += numero[i];
}
cout << "La suma es: " << s;
cout << endl;
double promedio = s / i;
cout << "El promedio es: " << promedio;
cout << endl;
cout << "Desea entrar otros numeros?(s/n): ";
cin >> resp;
}

return 0;
}


Saludos

ancabi
19-feb-2005, 23:41
MUCHISIMAS GRACIAS PICCOLO!!!!!! funciono perfecto lo venia buscando desde hace dias a ese problema y vos en unos minutos me lo resolviste, mil gracias!!!

saludos

etirini17
20-feb-2005, 22:59
guau, y en visual basic tb programan?

SxR
21-feb-2005, 13:44
Sip, visual basic tb!!! Aki le pegamos a todo :D

ancabi
22-mar-2005, 22:09
buenas, sigo este tema para no abrir otro, siguiendo mi manual, estoy en estructuras "struct" y me da un problema para hacer, que es hacer una "mini agenda" en donde el usuario entre nombres y numeros de telefono, los guarde en memoria y despues los pueda buscar por nombre o por telefono, no quiero que me lo den resuelto, lo que pido es si me pueden decir como hacer para que el valor quede guardado y despues que lo lea, como seria el comando??

PD mire en muchos manuales pero no encuentro y en el mio dice algo asi como "LeeX () {return X}" pero el compilador no me lo toma

Saludos

Giskard
22-mar-2005, 23:24
Para guardarlos, debes usar un arreglo en tu estructura, y al finalizar el programa escribir todo en un archivo de texto plano (la forma más fácil) en c++ están las funciones de fprintf y fscanf que son iguales que scanf y printf pero escriben en un archivo en lugar de escribir a la pantalla.

ancabi
22-mar-2005, 23:32
ok, me pondre a buscar en el manual coo hacerlo, porque yo no uso printf, ni scanf, sino que uso cout y cin, pero nunca esta de mas aprenderlo

gracias, saludos

ancabi
23-mar-2005, 19:02
buenas, buscando un poco encontre la forma de escribir y leer ficheros mediante streams, pero el problema es que cuando cierro el programa y lo vuelvo a abrir me borra lo anterior, como puedo hacer para que siga desde donde se quedo???

aca les dejo el codigo de ese bloque:


ntronombre:
cout<<endl;
cout<<"Introduzca el nombre: ";
cin>>nombrecompleto.Nombre;
fs<<nombrecompleto.Nombre;
cout<<endl;
cout<<"Introduzca el apellido: ";
cin>>nombrecompleto.Apellido;
fs<<" ";
fs<<nombrecompleto.Apellido;
fs<<endl;
cout<<endl;
cout<<"Desea introducir otro nombre?(s/n): ";
cin>>resp;
while (resp == 's' || resp == 'S') goto intronombre;
goto start;


Saludos

Giskard
24-mar-2005, 02:32
Al momento de inicializar el archivo, talvez hayas puesto sobreescribir el archivo, entonces, deberías cambiarlo a agregar.

Scar_T
24-mar-2005, 03:08
Crea tu fstream asi:

fstream of;
of.open("prueba.txt", ios::out | ios::app);
of.close();

El ios::app es para que busque el final del archivo y ahi empiece a escribir.

ancabi
25-mar-2005, 03:00
es verdad, muchas gracias!! pero me di cuenta que desde un txt no puedo hacer que el programa busque info, no??

tengo que hacer una base de datos, lo que no se es como decirle al programa que busque el telefono de alguien en una base de datos :confused: , me pueden ayudar???

gracias y saludos :)

Giskard
25-mar-2005, 19:33
Si tu archivo no es demasiado grande, es recomendable que "bajes" todo el archivo a una estructura, sería algo como:
struct gente{
char nombre[50];
char telefono[20];
}
y luego, con una variable, digamos:
struct gente amigos[100];
vas bajando del archivo los nombres y teléfonos a tu array amigos, así, una estructura es más fácil de trabajar que un archivo. Por supuesto, al final, vuelves a escribir el archivo con los datos de tu estructura. Y sólamente te meterás con el archivo al principio y al final del programa.

ancabi
25-mar-2005, 22:25
si mal no entendi, lo que decis que haga es que ya declare los nombre y los telefonos en un array??? si es asi ya se como hacer y en el manual eso era lo que decia pero como lo quise complicar un poco quise que se puedan introducir los nombre y para eso usar una base de datos o lo que sea, pero tampoco es de vida o muerte, sigo estudiando y algun dia lo podre hacer.

gracias igualmente

Saludos

GolloS
29-sep-2008, 01:34
Que tal saludos a todos los programadores de este foro!!
Bueno yo soy nuevo en esto de programar y tengo muchas ganas de aprender aqui les voy a dejar el codigo de lo primero que he hecho en este lenguaje no es mucho o quizas nada pero apenas hace un dia que comense un curso de c y c++. Aca les dejo mi primer programita y si quieren ayudarme pueden darme una idea de algun otro programita que no sea tan complicado para hacerlo en este lenguaje. Gracias de antemano a todos los que me quieran ayudar!

#include <stdio.h>
main() {
printf("\n ");
printf("\n ");
printf("\n ************************************************** ***** ");
printf("\n * * ");
printf("\n * * ");
printf("\n * * ");
printf("\n * * ");
printf("\n * ****** ****** ** ** ****** ****** * ");
printf("\n * ** * ** ** ** ** ** ** ** * ");
printf("\n * ** ** ** ** ** ** ** ****** *");
printf("\n * ** ** ** ** ** ** ** ** ** *");
printf("\n * ** * ** ** **** **** ** ** ** *");
printf("\n * ****** ****** **** **** ****** ****** *");
printf("\n * *");
printf("\n * *");
printf("\n * *");
printf("\n * Curso De Programacion Lenguaje C y C++ *");
printf("\n * *");
printf("\n * *");
printf("\n * *");
printf("\n ************************************************** *****");
getchar();
}

Otra cosa me gustaria saber si los astericos con los que hice el nombre se pueden hacer titilar! si es ale agradeceria que me digan como puedo hacerlo!
Espero sus respuestas

hystd
30-sep-2008, 04:27
Buenas y bienvenido!. Antes de nada, lee las normas y no reabras hilos viejos. Por ser la primera vez, te contestaré :p

Bueno por algo se empieza... todos hicimos un "hola mundo" al principio :).

Si de verdad te vas a tomar en serio aprender C, ahora que sabes mostrar textos con "printf" y conoces su funcionamiento, puedes aprovechar para usar su primo-hermano "scanf", para recibirlos del usuario.

Has usado la función getchar(), para "parar" la ejecución del programa y esperar a que se ingrese un carácter... ¿qué tal si almacenas ese caracter en una variable para luego hacer una cosa u otra en función de la tecla pulsada? algo del tipo:

c=getchar(); //c es una variable de tipo char.
if (c=='a'){
... //ha pulsado "a"
}

Debes conocer los operadores (aritmeticos, lógicos, comparadores, etc...), y las estructuras de control... "if (codicion){accion} else {accion}, el switch-case, los bucles for y while... etc...

La potencia del C radica entre otras cosas en los punteros, apréndelos, lograrás entender mejor los conceptos, y por tanto conseguiras realizar cualquier programa que te propongas.

Maneja las estructuras de datos básicas, esto es, los vectores (arrays), unidimensionales, bidimensionales, y multidimensionales.
Asímismo, aprende a crear tus propias estructuras de datos para modelar cualquier problema (uso de typedef)

Aprende el manejo de registros y ficheros. Cómo se crean (desde el punto de vista de alto nivel), cómo se abren, cómo se modifican, etc...

Sea el lenguaje que sea (compilado), hay dos conceptos claros que se deben aprender: algoritmos y datos. Si dominas ambos, no temerás resolver ningún problema.

En cuanto a tu pregunta, sobre cómo hacer que "titileen" (supongo que te refieres a "parpadear"), pues bueno, la cuestión sería vaciar el buffer donde se encuentran los caracteres en consola y volver a mostrar todo el texto, cada cierto tiempo.

Bueno, puedes usar las llamadas al sistema utilizando la función "system", en este caso, bajo Windows, sería algo del tipo: system("cls"); que equivale a escribir el comando "cls" en la consola. Debes incluir el fichero #include <stdlib.h>

Del mismo modo, puedes usar la función clrscr(); pero debes incluir el fichero #include <conio.h>

También cabe otra opción, que es llamar a la API de Windows: FillConsoleOutputCharacter, introduciendo el caracter ' ' (espacio).

Un saludo, y adelante ;)

GolloS
01-oct-2008, 03:22
Muchas gracias por toda esa informacion me va a ser muy util para seguir en esto y si de verdad estoy tomando esto muy en serio pondre en pratica lo que me dices! muchas gracias de nuevo y espero que me puedas seguir ayudando! voy a publicar un nuevo tema para pedir ayuda de un programita que encontre en este foro y lo estoy adaptando a mis necesidades, vale la pena mencionar que apenas e visto una sola clase del curso de programacion el sabado proximo sera la segunda!