Salve a tutti, ho uno strano problema in DEV...
Oggi ho fatto l'esame di informatica e questa era la traccia:
Sia dato un file di testo contenente una sequenza di nomi (Carlo, Gianna, Massimo, Carlo, Gianna, Gianna, Ada, Marta, Ada). Nell' ipotesi che un nome maschile finisca sempre per "o" ed i nomi femminili per "a", scrivere un programma che conta e stampi i nomi maschili e i nomi femminili senza ripetizioni contenuti nel file.
Il progetto al pc dell'università è andato bene e so stato promosso, ma tornando a casa voelvo rifarmi il programmino... Andando a compilarlo noto uno strano comportamento del DEV che ho su sto Win7 :| (l'uni usa XP).
ecco il codice:
main.cpp
codice:
#include <cstdlib>
#include <iostream>
#include <string.h>
#include <fstream>
#include "esame.h"
using namespace std;
int main(int argc, char *argv[])
{
vettore m, fem;
int riemp, riemp2;
inizializza (m, riemp, fem, riemp2);
cout << "I nomi maschili sono "<<riemp<<" e sono:"<<endl;
stampa (m,riemp);
cout << endl<<endl<<"I nomi femminili sono "<<riemp2<<" e sono:"<<endl;
stampa (fem, riemp2);
cout << endl<<endl<<"Programma eseguito con successo. . . Premere un tasto per terminare";
system("PAUSE>nul");
return EXIT_SUCCESS;
}
esame.cpp
codice:
#include <iostream>
#include <string.h>
#include <fstream>
#include "esame.h"
using namespace std;
void inizializza (vettore v, int &r, vettore v2, int &r2)
{
fstream f;
stringa nomi;
char t;
r=0;
r2=0;
f.open ("name.txt", ios::in);
while (!f.eof()){
f >> nomi;
t=sesso (nomi);
cout << "";
if ((t=='a') && (!ciSta(v2,r2,nomi))){
strcpy(v2[r2],nomi);
r2++;
}
else if (!ciSta (v,r,nomi)){
strcpy(v[r],nomi);
r++;
}
}
f.close();
}
bool ciSta (vettore v, int r, stringa s)
{
for (int i=0;i<r;i++)
while (strcmp(v[i],s)==0)
return true;
}
void stampa (vettore v, int r)
{
for (int i=0;i<r;i++)
cout << "V["<<i<<"]= "<<v[i]<<endl;
}
char sesso (stringa s)
{
char t;
int n;
n=strlen (s);
t=s[n-1];
return t;
}
esame.h
codice:
#ifndef ESAME_H
#define ESAME_H
#define N 100
typedef char stringa [256];
typedef stringa vettore [N];
void inizializza (vettore, int &, vettore, int &);
bool ciSta (vettore, int, stringa);
void stampa (vettore, int);
char sesso (stringa);
#endif
Il progetto è uguale a quello consegnato, solo in una cosa differisce... in esame.cpp
dentro il while, se non ci metto quel cout i vettori mi risultano vuoti... se lo lascio così funziona... provate anche voi mettendo come commento quella riga... Veramente non so che problema sia... all'università non ce l'ho messo ed è andato :O