#include <iostream>
#include <fstream>
#include <string>
#include <cstdlib>
using namespace std;
#define NMAX 20
#define CONTROL_D ('D' - 0x40)
int procurarAluno(string sigla, char *path)
{
ifstream inClientFile(path, ios::in);
string s,r,s_aux,n;
int idx=0,tam=0,i=0;
int nr;
char*vec;
while(getline(inClientFile, s, '\n'))
{
r="";
n="";
s_aux=s;
idx=0;
tam=0;
while(idx!=-1)
{
idx = s_aux.find(' ');
if (idx!=-1)
{
if (n=="")
n = n + s_aux.substr(0,idx);
r = r + s_aux[idx+1];
s_aux = s_aux.substr(idx+1,s.length()-tam);
tam = tam+idx+1;
}
}
if(sigla==r)
break;
}
nr=atoi(n.c_str());
if (sigla==r)
return nr;
else
return 0;
}
void lerTurma(char *path)
{
string s,r,s_aux;
int idx=0,tam=0;
int vec[100],i;
ifstream inClientFile(path, ios::in);
while(getline(inClientFile, s, '\n'))
{
r="";
s_aux=s;
idx=0;
i=0;
tam=0;
while(idx!=-1)
{
idx = s_aux.find(' ');
if (idx!=-1)
{
vec[i]=idx+tam;
i++;
s_aux = s_aux.substr(idx+1,s.length()-tam);
tam = tam+idx+1;
}
}
r = r + s.substr(0,vec[1]);
r = r + s.substr(vec[i-1],s.length()-i-1);
cout << r << endl;
}
inClientFile.close();
}
int nrAlunos(char *path)
{
int lineCount = 0;
string s;
ifstream inClientFile(path, ios::in);
while(getline(inClientFile, s, '\n'))
++lineCount;
inClientFile.close();
return lineCount;
}
int inscreverAluno(char *path)
{
int alunos = nrAlunos(path);
string s;
ofstream outClientFile(path, ios::app);
cout << "Introduza o nome do aluno a inscrever" << endl;
getline(cin,s);
outClientFile << alunos + 1 << ' ' << s << endl;
outClientFile.close();
return 0;
}
int main()
{
bool fim = false;
string s,sigla;
int alunos=0;
int nr;
char *path = {"turma.txt"};
char f[100];
alunos=nrAlunos(path);
while (fim == false)
{
cout << "Para inserir aluno prima I" << endl << "Para ler lista de alunos prima L" << endl << "Para procurar siglas prima P" << endl << "Para terminar CTRL+D" << endl;
getline(cin,s);
if (s[0] == CONTROL_D)
{
fim = true;
cout << "Fim de insercao" << endl;
}
else if (s[0] == 'I')
alunos = inscreverAluno(path);
else if (s[0] == 'L')
lerTurma(path);
else if (s[0] == 'P')
{
cout << "qual a sigla que quer procuras" << endl;
cin >> sigla;
nr = procurarAluno(sigla, path);
if (nr!=0)
cout << "posicao do aluno=" << nr << endl;
else
cout << "aluno nao encontrado" << endl;
}
if (alunos == NMAX)
{
fim = true;
cout << "Numero maximo de alunos atigido" << endl;
}
}
return 0;
}