hola amigos hace una vida no le meto mano a c++
me darian una mano en esta parte estoy trabado
# include <iostream>
#include <string>
using namespace std;
struct T_alumno
{
string nombre;
float nota[2];
} alumno[29];
void inicializar();
int main()
{
inicializar();
cin.get();
return 0;
}
void inicializar()
{
const int limiteAlumnos =30;
const int limiteNota = 3;
char pasarNombre[50];
float pasarNota;
for (int i = 0; i < limiteAlumnos; i++)
{
cout << "pasar el nombre del alumno " << endl;
cin >> pasarNombre;
alumno[i].nombre = pasarNombre;
for (int j = 0; j < limiteNota; j++)
{
cout << "pasar las 3 notas " << endl;
cin >> pasarNota;
alumno[j].nota = pasarNota;
}
}
}
***
el error
***
Citar1>------ Operación Compilar iniciada: proyecto: maxurbalu, configuración: Debug Win32 ------
1> main.cpp
1>c:\users\administrador\documents\visual studio 2013\projects\ver\ver\main.cpp(39): error C2440: '=' : no se puede realizar la conversión de 'float' a 'float [2]'
1> No hay conversiones a tipos de matriz, aunque hay conversiones a referencias o punteros a matrices
========== Compilar: 0 correctos, 1 incorrectos, 0 actualizados, 0 omitidos ==========
struct T_alumno
{
string nombre;
float nota[2];
} alumno[29];
float pasarNota;
/******/
alumno[j].nota = pasarNota;
jajaja mira ese pequeño detalle ....gracias
No dije nada :silbar:
Saludos.z
do
{
cout << "pasar el nombre del alumno " << endl;
cin >> pasarNombre;
alumno[limiteAlumnos-1].nombre = pasarNombre;
for (int i = 0; i < limiteNota; i++)
{
cout << "pasar las 3 notas " << endl;
cin >> pasarNota;
alumno[cuentaAlumno].nota[i] =pasarNota;
}
cout << "cantidad de alumnos ingresdos " << cuentaAlumno << endl;
cout << "quiere ingresar otro alumno? si=1; no=0" << endl;
cin >> condicion;
condicion == 1 ? cuentaAlumno = cuentaAlumno++ : cuentaAlumno;
} while (cuentaAlumno < limiteAlumnos && condicion ==1 );
le encontre la vuelta, en la parte
alumno[j].nota
iba desde alumno 0 1 y 2...en realidad es alumno n nota 0 1 y 2
Cita de: flony en 29 Enero 2015, 04:22 AM
# include <iostream>
struct T_alumno
{
string nombre;
float nota[2];
} alumno[29];
En C y C++ los indices inician en 0 y terminan en N-1 donde N es el numero de elementos. Si quieres un array de treinta estudiantes con tres calificaciones cada uno debes cambiar esa declaración a:
# include <iostream>
struct T_alumno
{
string nombre;
float nota[3];
} alumno[30];
Cita de: flony en 30 Enero 2015, 15:53 PM
condicion == 1 ? /* ==> */ cuentaAlumno = cuentaAlumno++ /* <== */ : cuentaAlumno;
No deberías hacer eso primero porque el lenguaje no define cuando se aplicara el efecto lateral y segundo porque estas modificando dos veces el objeto. Para el caso utiliza:
if (condicion == 1)
cuentaAlumno++;
Un saludo
lo tendre en cuenta....justo estaba por preguntar otra cosa...pero capaz tengas razon
hasta aca va mi codigo
# include <iostream>
#include <string>
using namespace std;
struct T_alumno
{
string nombre;
float nota[2];
} alumno[2];
void inicializar();
void media();
int main()
{
int opcion;
cout << " para cargar alumnos marque 1"<<endl;
cout << "para obtener el mejor promedio marque 2"<<endl;
cout << "para salir marque 3 " << endl;
cout <<"que desea realizar?" << endl;
cin >> opcion;
if (opcion==1 || opcion==2 || opcion==3)
{
switch (opcion)
{
case 1:inicializar();
case 2:media();
case 3:break;
}
}
cin.get();
return 0;
}
void inicializar()
{
const int limiteAlumnos =3;
const int limiteNota = 3;
string pasarNombre;
float pasarNota;
int condicion, cuentaAlumno=0;
do
{
cout << "pasar el nombre del alumno " <<endl;
cin >> pasarNombre;
alumno[cuentaAlumno].nombre = pasarNombre;
for (int i = 0; i < limiteNota; i++)
{
cout << "pasar las 3 notas " << endl;
cout << "nota numero" << i << endl;
cin >> pasarNota;
alumno[cuentaAlumno].nota[i] =pasarNota;
}
cout << "cantidad de alumnos ingresdos " << cuentaAlumno << endl;
cout << "quiere ingresar otro alumno? si=1; no=0" << endl;
cin >> condicion;
condicion == 1 ? cuentaAlumno = cuentaAlumno++ : cuentaAlumno;
} while (cuentaAlumno < limiteAlumnos && condicion ==1 );
}
void media()
{
const int limiteAlumnos = 3;
const int limiteNota = 3;
float suma=0;
float mayor=0;
int posicion;
float media[limiteAlumnos-1];
for (int i = 0; i < limiteAlumnos; i++)
{
for (int j = 0; j < limiteNota; j++)
{
suma= alumno[i].nota[j] +suma ;
}
media[i] = suma / 3;
}
for (int k = 0; k < limiteAlumnos-1; k++)
{
if (media[k]>mayor)
{
mayor = media[k];
posicion = k;
}
}
cout << " el alumno con mejor promedio es: " << endl;
cout << alumno[posicion].nombre << "y su promedio es" << mayor << endl;
}
***
el error
Citar'maxurbalu.exe' (Win32): 'C:\Users\Administrador\Documents\Visual Studio 2013\Projects\maxurbalu\Debug\maxurbalu.exe' cargado. Símbolos cargados.
'maxurbalu.exe' (Win32): 'C:\Windows\SysWOW64\ntdll.dll' cargado. No se encuentra el archivo PDB o no se puede abrir.
'maxurbalu.exe' (Win32): 'C:\Windows\SysWOW64\kernel32.dll' cargado. No se encuentra el archivo PDB o no se puede abrir.
'maxurbalu.exe' (Win32): 'C:\Windows\SysWOW64\KernelBase.dll' cargado. No se encuentra el archivo PDB o no se puede abrir.
'maxurbalu.exe' (Win32): 'C:\Windows\SysWOW64\msvcp120d.dll' cargado. No se encuentra el archivo PDB o no se puede abrir.
'maxurbalu.exe' (Win32): 'C:\Windows\SysWOW64\msvcr120d.dll' cargado. No se encuentra el archivo PDB o no se puede abrir.
Primera excepción en 0x0F6C34C0 (msvcr120d.dll) en maxurbalu.exe: 0xC0000005: Infracción de acceso al escribir en la ubicación 0x00000000.
Excepción no controlada en 0x0F6C34C0 (msvcr120d.dll) en maxurbalu.exe: 0xC0000005: Infracción de acceso al escribir en la ubicación 0x00000000.
Primera excepción en 0x0F6C34C0 (msvcr120d.dll) en maxurbalu.exe: 0xC0000005: Infracción de acceso al escribir en la ubicación 0x00000000.
Excepción no controlada en 0x0F6C34C0 (msvcr120d.dll) en maxurbalu.exe: 0xC0000005: Infracción de acceso al escribir en la ubicación 0x00000000.
Primera excepción en 0x0F6C34C0 (msvcr120d.dll) en maxurbalu.exe: 0xC0000005: Infracción de acceso al escribir en la ubicación 0x00000000.
Excepción no controlada en 0x0F6C34C0 (msvcr120d.dll) en maxurbalu.exe: 0xC0000005: Infracción de acceso al escribir en la ubicación 0x00000000.
Primera excepción en 0x0F6C34C0 (msvcr120d.dll) en maxurbalu.exe: 0xC0000005: Infracción de acceso al escribir en la ubicación 0x00000000.
Excepción no controlada en 0x0F6C34C0 (msvcr120d.dll) en maxurbalu.exe: 0xC0000005: Infracción de acceso al escribir en la ubicación 0x00000000.
Primera excepción en 0x0F6C34C0 (msvcr120d.dll) en maxurbalu.exe: 0xC0000005: Infracción de acceso al escribir en la ubicación 0x00000000.
Excepción no controlada en 0x0F6C34C0 (msvcr120d.dll) en maxurbalu.exe: 0xC0000005: Infracción de acceso al escribir en la ubicación 0x00000000.
El programa '[816] maxurbalu.exe' terminó con código 0 (0x0).
foto asi se aprecia el error
(http://thumbs.subefotos.com/35f78b08fcd0402085e3730448671381o.jpg) (http://subefotos.com/ver/?35f78b08fcd0402085e3730448671381o.jpg)
se me hace que me sali del vector