Si la funciones Usb esta Enable en la Bios
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes MenúCita de: AlbertoBSD en 23 Julio 2016, 05:11 AM
Como marcas un registro vacio??
La idea seria la siguienteint borrar(int pos,int estudiantes[],int notas[]){
int i = pos -1;
estudiantes[i] = /*Valor para identificar estudiante vacio*/;
for (int x=0; x<asignatura; x++){
notas[5*i+x] = /* Nota vacia */;
// notas--; // Esta instruccion no tiene sentido
}
}
Te tienes que plantear como identificar a un estudiante vacio, o si eso no existe tendrias que mover los valores restantes para que ocupen la posicion eliminada.
Saludos
Citarcrack81
//Funcion de borrar un estudiante------------------------------------------------------
int borrar(int pos,int estudiantes[],int notas[]){
for(int i=pos-1; i<num; i++){
estudiantes[i];
num--;
for (int x=0; x<asignatura; x++){
notas[5*i+x];
notas--;
}
}
}
Cita de: AlbertoBSD en 22 Julio 2016, 21:15 PM
En el X haces eso siempre escribes en los mismos 5 lugares.
Necesitas algo como un desplazamiento seria como5* i +x
Te dejo este video
[youtube=640,360]https://www.youtube.com/watch?v=U-zA-VvOllM[/youtube]
Cita de: crack81 en 22 Julio 2016, 21:56 PM
Hola tienes varios problemas de entrada los nombres de las personas los estas manejando como enteros tienes dos opciones o manejarlos como string o un arreglo de char al ver que estas en C++ aconsejo los strings otra cosa es que no estabas guardando correctamente las notas ya que las estabas sobrescribiendo.
Al imprimir no recorrias correctamente los arreglos de notas y nombres de los estudiantes y por eso los datos no eran los correctos, bueno me di a la tarea de modificar tu programa y ya funciona pero tiene detalles.#include <iostream>
using namespace std;
void llenar (string estudiantes[], int notas[]);
void imprimir(string estudiantes[], int notas[]);
int menu ();
//variables
int num=0;
int asignatura=5;
string estudiantes[100];
int posicionesEstudiante=0;
int notas[100];
int posicionNotas=0;
int main()
{
int opc;
do
{
opc=menu();
switch (opc)
{
case 1:
llenar(estudiantes, notas);
break;
case 2:
imprimir(estudiantes, notas);
break;
case 3:
cout<<"\nADIOS"<<endl;
break;
}
}
while (opc !=3);
cin.get();
}
void llenar (string estudiantes[], int notas [])
{
cout<<"Deme el numero de estudiante a insertar: "<<endl<<endl;
cin>>num;
for(int i=0; i<=num-1; i++)
{
cout<<"\nDame el estudiante "<<i+1<<endl;
cin>>estudiantes[posicionesEstudiante];
for (int x=0; x<asignatura; x++)
{
cout<<"\nNota "<<x+1<<" del estudiante "<<i+1<<" :";
cin>>notas[posicionNotas];
posicionNotas++;
}
posicionesEstudiante++;
}
}
void imprimir (string estudiantes [], int notas [])
{
int contador=0;
for(int i=0; i<=posicionesEstudiante-1; i++)
{
cout<<"\nESTUDIANTE "<<i+1<<endl<<endl;
cout<<estudiantes[i]<<endl<<endl;
for (int x=0; x<asignatura; x++)
{
cout<<notas[contador]<<endl;
contador++;
}
}
}
int menu ()
{
int opc;
cout<<"1.LLENAR\n2.IMPRIMIR\n3.SALIR"<<endl;
cin>>opc;
return opc;
}
Si quieres puedes reformular tu programa y usar structs para poder tener una mejor abstraccion.
Ejemplo:#include <iostream>
using namespace std;
const int NUMERO_ASIGNTURAS=5;
struct Estudiante
{
string nombre;
int asignaturas[NUMERO_ASIGNTURAS];
};
int main(){
Estudiantes estudiantes[100];
return 0;
}
Si sabes usar vector o listas enlazadas puedes sustuir los arreglos.
Si tienes dudas avisanos saludos...
#include <iostream>
using namespace std;
int llenar (int estudiantes[], int notas[]);
int imprimir(int estudiantes[], int notas[]);
int menu ();
int num;
int asignatura=5;
int llenar (int estudiantes[], int notas []){
cout<<"Deme el numero de estudiante a insertar: "<<endl<<endl;
cin>>num;
for(int i=0; i<=num-1; i++){
cout<<"\nDame el estudiante "<<i+1<<endl;
cin>>estudiantes[i];
for (int x=0; x<asignatura; x++){
cout<<"\nNota "<<x+1<<" del estudiante "<<i+1<<" :";
cin>>notas[x];
}
}
}
int imprimir (int estudiantes [], int notas []){
for(int i=0; i<=num-1; i++){
cout<<"\nESTUDIANTE "<<i+1<<endl<<endl;
cout<<estudiantes[i]<<endl<<endl;
for (int x=0; x<asignatura; x++){
cout<<notas[x]<<endl;
}
}
}
int menu (){
int opc;
cout<<"1.LLENAR\n2.IMPRIMIR\n3.SALIR"<<endl;
cin>>opc;
return opc;
}
int main(){
int estudiantes[100];
int notas[100];
int opc;
do{
opc=menu();
switch (opc){
case 1:
llenar(estudiantes, notas);
break;
case 2:
imprimir(estudiantes, notas);
break;
case 3:
cout<<"\nADIOS"<<endl;
break;
}
}
while (opc !=3);
system ("pause");
}