pasar datos a una struct

Iniciado por flony, 29 Enero 2015, 04:22 AM

0 Miembros y 1 Visitante están viendo este tema.

flony

hola amigos hace una vida no le meto mano a c++
me darian una mano en esta parte estoy trabado
Código (cpp) [Seleccionar]
# 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 ==========
si un problema no tiene solucion entonces no es un problema...es algo inevitable

engel lex

Código (cpp,4) [Seleccionar]
struct T_alumno
{
string nombre;
float nota[2];
} alumno[29];



Código (cpp) [Seleccionar]
float pasarNota;
/******/
alumno[j].nota = pasarNota;


El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

flony

jajaja mira ese pequeño detalle ....gracias
si un problema no tiene solucion entonces no es un problema...es algo inevitable

_Enko

#3
No dije nada  :silbar:
Saludos.z

flony

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
si un problema no tiene solucion entonces no es un problema...es algo inevitable

rir3760

Cita de: flony en 29 Enero 2015, 04:22 AM
Código (cpp) [Seleccionar]
# 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:
Código (cpp) [Seleccionar]
# include <iostream>
struct T_alumno
{
   string nombre;
   float nota[3];
} alumno[30];


Cita de: flony en 30 Enero 2015, 15:53 PM
Código (cpp) [Seleccionar]
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:
Código (cpp) [Seleccionar]
if (condicion == 1)
   cuentaAlumno++;


Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

flony

#6
lo tendre en cuenta....justo estaba por preguntar otra cosa...pero capaz tengas razon
hasta aca va mi codigo
Código (cpp) [Seleccionar]
# 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


se me hace que me sali del vector
si un problema no tiene solucion entonces no es un problema...es algo inevitable