hola a todos!!soy un estudiante de valencia españa y tengo un programa de c++ (ficheros)que no me funciona.Me compila bien con dev c++, pero no hace lo que quiero que haga lo he intentado mil veces y no se me ocurre. ¿me podriais ayudar? por favor.
El ejercicio trata de varias opciones:
1 poniendo el nombre de la fotocpiadora salga la cantidad que ya existe en el fichero txt.
2 el añadir un nombre y cantidad de fotocpiadora nuevo al fichero.
el fichero stock.txt esta en columna ejemplo:
Hp\n
23\n
epson\n
12\n
Oki\n
9
os dejo el codigo:
#include<fstream>
#include<iostream>
#include<string>
using namespace std;
struct impresoras{
string nombre;
int cantidad;
};
const int MAX=100;
typedef impresoras vector [MAX];
void programa(vector stock, ifstream &f, ofstream &p);
int main(){
ifstream f;
ofstream p;
f.open("stock.txt");
int cont=0;
vector stock;
if(!f )
{
cout<<"Error abriendo el fichero"<<endl;
f.close();
}
else
{
while(!f.eof())
{
getline(f, stock[cont].nombre);
f>>stock[cont].cantidad;
f.ignore();
cont++;
}
programa( stock, f, p);
}
system("PAUSE");
return (0);
}
void programa(vector stock, ifstream &f, ofstream &p){
int opcion, i, cont=0;
string nombre;
do{
cout<<"introduce 1 para obtener el numero de fotocopiadoras"<<endl;
cout<<"intruduce 2 para anyadir nuevo modelo"<<endl;
cout<<"introduce 3 para cerrar el fichero"<<endl;
cin>>opcion;
cin.ignore();
if (opcion==1)
{
f.open("stock.txt");
string nombre,resul;
int i, j, verdad;
cout<<"introduce el modelo de fotocopiadora"<<endl;
getline(cin, nombre);
cin.ignore();
i=0;
j=0;
do{
if(nombre == stock[i].nombre)
{
verdad=1;
}
else
{
verdad=0;
}
resul=stock[i].nombre;
i++;
f.close();
}
while (verdad==0 || i==100);
if(resul==nombre)
{
j=i-1;
cout<<"El numero de fotocopiadoras de ese tipo es: "<<stock[j].cantidad<<endl;
}
else
{
cout<<"El modelo escrito no coincide con ninguno de los que hay en el almacen"<<endl;
}
}
else
{
if (opcion==2)
{
p.open("stock");
string nombre2;
int num;
cout<<"introduce el modelo que quieres añadir"<<endl;
getline(cin, nombre2);
cout<<"introduce el numero de fotocop. en el almacen"<<endl;
cin>> num;
cin.ignore();
p<<nombre2<<endl;
p<<num<<endl;
p.close();
while(!f.eof())
{
f.open("stock");
getline(f, stock[cont].nombre);
f>>stock[cont].cantidad;
//f.ignore();//
cont++;
f.close();
}
}
else
{
if(opcion!=3)
{
cout<<"Debes introducir una de las 3 opciones: "<<endl;
cout<<"introduce 1 para obtener el numero de fotocopiadoras"<<endl;
cout<<"intruduce 2 para añadir nuevo modelo"<<endl;
cout<<"introduce 3 para cerrar el fichero"<<endl;
cin>>opcion;
}
}
}
}
while (opcion!=3);
}
solo por molestaros en leerlo.. muchas gracias!!