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

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  problemas con una linea de codigo c++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: problemas con una linea de codigo c++  (Leído 6,126 veces)
eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: problemas con una linea de codigo c++
« Respuesta #10 en: 8 Abril 2014, 10:14 am »

Código
  1. registroNotas[i].alumno.registrar_estudiantes ;

si "registrar_estudiantes" es una función... tienes que llamarla con los paréntesis:

Código
  1. registroNotas[i].alumno.registrar_estudiantes( );

En cuanto al promedio... si lo almacenas en un int estarás perdiendo precisión, ya que un promedio únicamente almacena la parte entera de la operación... estás perdiendo los decimales.

Además, te pasa lo mismo que te he comentado antes, si cambias el valor de cNotas, el código no funcionará ya que hace todo "a piñón fijo"... la idea es que uses un bucle para calcular el promedio desde 0 hasta cNotas.

Código
  1. float promedio = 0.0;
  2. for ( int j=0; j < cNotas; j++ )
  3.  promedio += registroNotas[i].notas[ j ];
  4. promedio /= (float)cNotas;


En línea

max9100

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Re: problemas con una linea de codigo c++
« Respuesta #11 en: 8 Abril 2014, 10:33 am »

ok ya cambie pero al momento de llamar imprimir el main me da error

Código:
for (int i=0; i<nestudiante ;i++){
registroNotas [i].imprimir()[i];
}


En línea

eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: problemas con una linea de codigo c++
« Respuesta #12 en: 8 Abril 2014, 10:52 am »

Es que esa línea no tiene ningún sentido.

A ver, respira hondo. Se supone que estás aprendiendo... y esto es parte del proceso de aprendizaje... si te doy todo mascado no vas a aprender nada salvo a copiar.

si "imprimir( )" es una función que retorna...nada, por qué le pones después ese ""??
En línea

max9100

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Re: problemas con una linea de codigo c++
« Respuesta #13 en: 8 Abril 2014, 11:07 am »

perdon estoy un poco estresado porque lla ni madres sabia que hacer y no soy tan malo en la programacion de c++  :P :P :P
bueno esto es lo que tengo en el main

Código:
int main(){
int nestudiante=0;

cout<<"ingrese cantidad de estudiantes a procesar";
cin>>nestudiante;

for (int i=0; i<nestudiante ;i++){
registrar_notas(nestudiante); 
}

for (int i=0; i<nestudiante ;i++){
imprimir(nestudiante);
}

system("pause");

}


pero al momento de que el programa empieza a funcionar pasa algo por ejemplo pongo 2 de los cuales estudiantes quiero ingresar pero 2,1,0,1 jeje ademas no me tira el promedio ni las notas que e ingresado
En línea

eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: problemas con una linea de codigo c++
« Respuesta #14 en: 8 Abril 2014, 11:19 am »

pero al momento de que el programa empieza a funcionar pasa algo por ejemplo pongo 2 de los cuales estudiantes quiero ingresar pero 2,1,0,1

Perdona pero no me he enterado de nada.

ademas no me tira el promedio ni las notas que e ingresado

Pon el código que tienes, que después de tantos cambios el anterior no es válido.

Además, estaría bien que indicases en la etiqueta "code" que el código es de C++ "code=cpp". Así tendrá un aspecto más legible.

Un último consejo... tabular el código con espacios hace que sea más legible en el foro que si usas el tabulador.
En línea

max9100

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Re: problemas con una linea de codigo c++
« Respuesta #15 en: 8 Abril 2014, 11:30 am »

me refiero a esto que no me sale las notas ni promedio  ademas de que el programa tiene un ciclo de 3 no de dos

Código:
ingrese cantidad de estudiantes a procesar 2
ingresar la informacion del estudiante 0
ingresar cuenta max
ingresar nombre max
ingresar edad 18
ingresar sexo m
ingresar nota 1 45
ingresar nota 2 45
ingresar nota 3 45
ingresar la informacion del estudiante 1
ingresar cuenta max
ingresar nombre max
ingresar edad 18
ingresar sexo m
ingresar nota 1 45
ingresar nota 2 45
ingresar nota 3 45
ingresar la informacion del estudiante 0
ingresar cuenta max
ingresar nombre max
ingresar edad 18
ingresar sexo m
ingresar nota 1 45
ingresar nota 2 45
ingresar nota 3 45
ingresar la informacion del estudiante 1
ingresar cuenta max
ingresar nombre max
ingresar edad 18
ingresar sexo m
ingresar nota 1 45
ingresar nota 2 45
ingresar nota 3 45
                0       0       0reprobo
                0       0       0reprobo
Presione una tecla para continuar . . .
En línea

eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: problemas con una linea de codigo c++
« Respuesta #16 en: 8 Abril 2014, 11:32 am »

Código
  1. for (int i=0; i<nestudiante ;i++){
  2. registrar_notas(nestudiante);  
  3. }

si a registrar_notas, le pasas siempre nestudiante, obviamente, la función no va a funcionar como esperas.

"nestudiante" es una constante... si tu quieres iterar tienes que usar la variable adecuada, en este caso la que recorre todos los valores desde 0 hasta "nestudiante", es decir, "i".

Código
  1. for (int i=0; i<nestudiante ;i++){
  2. registrar_notas( i );  
  3. }

En línea

max9100

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Re: problemas con una linea de codigo c++
« Respuesta #17 en: 8 Abril 2014, 11:40 am »

aqui esta el codigo completo pero me sige tirando el error de las notas y ahora el ciclo me lo tira 1 vez y lo pongo 2.

Código:
#include<iostream>
#include<string>
#include <cstdlib>
const int cNotas=3, cEstudiantes=100;
using namespace std;

struct Estudiante {

string cuenta;
string nombre;
int edad;
char sexo;

void registrar_estudiantes( ){
cout<<"ingresar cuenta ";getchar ();
getline(cin,cuenta);
cout<<"ingresar nombre ";getchar ();
getline(cin,nombre);
cout<<"ingresar edad ";
cin>>edad;
cout<<"ingresar sexo ";
cin>>sexo;
}
};

struct Registro_Notas{
Estudiante alumno;
int notas[cNotas];
};
Registro_Notas  registroNotas [cEstudiantes ] ;

void registrar_notas(int nestudiante){
for (int i=0;i<nestudiante;i++)
{
cout<<"ingresar la informacion del estudiante "<<i<<endl;
registroNotas[i].alumno.registrar_estudiantes() ;
cout<<"ingresar nota 1 ";
cin>>registroNotas[i].notas[cNotas] ;
cout<<"ingresar nota 2 ";
cin>>registroNotas[i].notas[cNotas] ;
cout<<"ingresar nota 3 ";
cin>>registroNotas[i].notas[cNotas] ;
}
}
float calcular_nta_final(float promedio = 0.0){

for ( int i=0; i < cNotas; i++ )
promedio += registroNotas[i].notas[ i ];
promedio /= (float)cNotas;
return promedio ;
}
void imprimir(int j){

cout << registroNotas[ cEstudiantes ].alumno.cuenta << "\t"<< registroNotas[ cEstudiantes ].alumno.nombre;
 
for ( int i=0; i< cNotas; i++ )
{
  cout  << "\t" << registroNotas[ cEstudiantes ].notas[ i ];
}
 if(calcular_nta_final()<70)
cout<<"aprobo";
 else
cout<<"reprobo";
cout << endl;
}
int main(){
int nestudiante=0;

cout<<"ingrese cantidad de estudiantes a procesar ";
cin>>nestudiante;

for (int i=0; i<nestudiante ;i++){
registrar_notas(i); 
}

for (int j=0; j<nestudiante ;j++){
imprimir(j);
}

system("pause");
}
En línea

eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: problemas con una linea de codigo c++
« Respuesta #18 en: 8 Abril 2014, 12:09 pm »

Revisa el código, tiene comentarios con los errores que has cometido.

Código
  1. #include <iostream>
  2. #include <string>
  3. #include <cstdlib>
  4.  
  5. const int cNotas=3, cEstudiantes=100;
  6.  
  7. using namespace std;
  8.  
  9. struct Estudiante
  10. {
  11.  string cuenta;
  12.  string nombre;
  13.  int edad;
  14.  char sexo;
  15.  
  16.  void registrar_estudiantes( )
  17.  {
  18.    // ***********
  19.    // getchar?? no mezcles NUNCA cin con getchar, por favor.
  20.    // funcionan de forma diferente y mezclarlas puede provocar efectos extraños.
  21.    // ***********
  22.    cout <<"ingresar cuenta ";
  23.    cin >> cuenta;
  24.    cout <<"ingresar nombre ";
  25.    cin >> nombre;
  26.    cout <<"ingresar edad ";
  27.    cin >> edad;
  28.    cout <<"ingresar sexo ";
  29.    cin >> sexo;
  30.  }
  31. };
  32.  
  33. struct Registro_Notas
  34. {
  35.  Estudiante alumno;
  36.  int notas[cNotas];
  37. };
  38. Registro_Notas  registroNotas [cEstudiantes ] ;
  39.  
  40. void registrar_notas(int nestudiante)
  41. {
  42.  // ***********
  43.  // nestudiante es el indice del estudiante actual... el bucle sobra
  44.  // ***********
  45.  
  46.  // ***********
  47.  // Si cambias 'i' por 'i+1' le das al usuario un indice mas legible
  48.  // ***********
  49.  cout<<"ingresar la informacion del estudiante "<< (nestudiante+1) <<endl;
  50.  registroNotas[ nestudiante ].alumno.registrar_estudiantes( );
  51.  
  52.  // ***********
  53.  // cNotas es una constante... la idea es usar un bucle
  54.  // ***********
  55.  for ( int j = 0; j < cNotas; j++ )
  56.  {
  57.    cout << "ingresar nota " << j+1 << " ";
  58.    cin >> registroNotas[ nestudiante ].notas[ j ];
  59.  }
  60. }
  61.  
  62. // ***********
  63. // promedio no es un argumento de la funcion... no tiene sentido
  64. // lo que si tienes que pasarle es el indice del estudiante
  65. // ***********
  66. float calcular_nota_final( int estudiante )
  67. {
  68.  float promedio = 0.0;
  69.  for ( int i=0; i < cNotas; i++ )
  70.    promedio += registroNotas[ estudiante ].notas[ i ];
  71.  promedio /= (float)cNotas;
  72.  
  73.  return promedio ;
  74. }
  75.  
  76. // ***********
  77. // j ??? que narices es j??? y si cambiamos j por estudiante ??? ahora queda mas claro, no?
  78. // Pues eso.
  79. // Ahora queda claro que todos los usos de cEstudiantes que tienes en esta funcion
  80. // son incorrectos
  81. // ***********
  82. void imprimir(int estudiante)
  83. {
  84.  cout << registroNotas[ estudiante ].alumno.cuenta << "\t"
  85.       << registroNotas[ estudiante ].alumno.nombre << "\t";
  86.  
  87.  for ( int i=0; i< cNotas; i++ )
  88.    cout << registroNotas[ estudiante ].notas[ i ] << "\t";
  89.  
  90.  // ***********
  91.  // Se supone que 100 es la nota máxima, no??
  92.  // Entonces se aprobara si la nota es superior a 70, no inferior.
  93.  // ***********
  94.  if( calcular_nota_final( estudiante ) > 70.0)
  95.    cout<<"aprobo";
  96.  else
  97.    cout<<"reprobo";
  98.  cout << endl;
  99. }
  100.  
  101. int main()
  102. {
  103.  int nestudiante=0;
  104.  
  105.  cout<<"ingrese cantidad de estudiantes a procesar ";
  106.  cin>>nestudiante;
  107.  
  108.  cout << endl << "###" << nestudiante << "###" << endl;
  109.  
  110.  // ***********
  111.  // Si nestudiante >= cEstudiante la aplicacion va a dar error, deberias controlar eso
  112.  // ***********
  113.  for (int i=0; i<nestudiante ;i++)
  114.  {
  115.    registrar_notas(i);
  116.  }
  117.  
  118.  // ***********
  119.  // Detalle: aqui puedes reutilizar i sin problemas.
  120.  // ***********
  121.  for (int i=0; i<nestudiante ;i++)
  122.  {
  123.    imprimir(i);
  124.  }
  125.  
  126.  system("pause");
  127.  
  128.  // ***********
  129.  // Detalle: aunque el compilador lo ponga por defecto, pon este return siempre.
  130.  // ***********
  131.  return 0;
  132. }
En línea

max9100

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Re: problemas con una linea de codigo c++
« Respuesta #19 en: 8 Abril 2014, 12:36 pm »

MUCHAS GRACIAS eferion  :D :D :D :D :D creo que mas los errores que tenia eran de logica  :-[ :-[ :-[ :-[ pero te agradezco de sobremaner
En línea

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

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Pasar codigo a una linea « 1 2 3 »
PHP
dimitrix 22 8,132 Último mensaje 28 Junio 2007, 10:52 am
por dimitrix
Repetir una línea de código
.NET (C#, VB.NET, ASP)
Krata 5 4,638 Último mensaje 27 Febrero 2008, 23:51 pm
por Sin Nick xD
Pasar de una linea de codigo a otro sin perder la secuencia del codigo en vb
Programación Visual Basic
plak 2 2,347 Último mensaje 28 Junio 2014, 03:13 am
por plak
Conoce al hombre que destruyó su compañía con una línea de código
Noticias
wolfbcn 0 1,710 Último mensaje 15 Abril 2016, 15:21 pm
por wolfbcn
Limpiar una linea de codigo[c++]
Programación C/C++
ianmorar03 1 2,654 Último mensaje 28 Junio 2016, 01:38 am
por AlbertoBSD
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines