Devo fare un programmino che mi legge da file una sequenza di nomi e devo inserire in due vettori o in due file (come ho fatto) i nomi maschili e poi i nomi femminili.
Ho usato Dev, ecco i codici:
MAIN
codice:
#include <cstdlib>
#include <iostream>
#include <fstream>
#include "prova.h"
#include <string.h>
using namespace std;
int main(int argc, char *argv[])
{
//vettore che conterrà i nomi
vettore nomi;
//riempimento vettore
int r=0;
//stringa in cui copierò le parole
stringa parola;
//variabile che userò per vedere se un nome è maschio o femmina
int n;
cout<<"Leggo il file...\n";
//leggo da file i nomi
leggiFile(nomi,r);
//cerco i nomi maschili e femminili all'interno
cercaNomi(nomi, r, parola, n);
system("PAUSE");
return EXIT_SUCCESS;
}
PROVA.CPP
codice:
#include <cstdlib>
#include <iostream>
#include <fstream>
#include "prova.h"
#include <string.h>
using namespace std;
void leggiFile(vettore nomi, int &r)
{
fstream f;
f.open("Nomi.txt", ios::in);
if(!f)
{
cout<<"Non trovo il file....\n";
}
else
{
//metto i nomi nel file
int i=0;
while(f.eof())
{
f>>nomi[i];
i++;
r=i;
}
}
f.close();
}
void cercaNomi(vettore nomi, int r, stringa parola, int &n)
{
for (int i=0; i<r;i++)
{
strcpy(parola,nomi[i]);
n=strlen(parola)-1;
//sistemo le parole in due file diversi
sistemaNomi1(parola, n);
sistemaNomi2(parola, n);
}
}
void sistemaNomi1(stringa parola, int n)
{
fstream f;
f.open("Nomi Maschili.txt", ios::in);
if(!f)
{
cout<<"Non trovo il file....\n";
}
else
{
//metto i nomi nel file
if(parola[n]=='o')
f<<parola[n];
}
f.close();
}
void sistemaNomi2(stringa parola, int n)
{
fstream f;
f.open("Nomi Femminili.txt", ios::in);
if(!f)
{
cout<<"Non trovo il file....\n";
}
else
{
//metto i nomi nel file
if(parola[n]=='a')
f<<parola[n];
}
f.close();
}
prova.h
codice:
#ifndef PROVA_H
#define PROVA_H
#define N 30
typedef char stringa[256];
typedef stringa vettore[N];
void leggiFile(vettore, int &);
void cercaNomi(vettore, int, stringa, int &);
void sistemaNomi1(stringa, int);
void sistemaNomi2(stringa, int);
#endif