Oppure

Loading
05/02/11 11:07
Postese15
ciao a tutti ragazzi questo è la mia prima discussione.
passiamo al problema...devo fare un programma che utilizza degli struct però nel campo nome non riesco a inserire parole separate da uno spazio...potete aiutarmi?
vi posto il file sorgente scritto da me.
struct Azienda{
char cognome[32];
char nome[32];
char reparto[4];
int anno;
int matricola;
};
#include <cstdlib>
#include <iostream>
#include "modulo.h"
using namespace std;

void leggi(int n,Azienda s[]);
void nuovo(int n,Azienda s[],Azienda s1[],int copy,int a1,int a2,int& cont);
void ordina(int copy,Azienda s1[]);
void stampa(int copy,Azienda s[]);

/*
*
*/
int main(int argc, char** argv) {
int n,a1,a2,copy,cont;
Azienda* s;
Azienda* s1;
cout<<"inserire numero di dipendenti: ";
cin>>n;
s=new Azienda[n];
if(s==NULL){
    cout<<"ERRORE";
    return -1;
}
leggi(n,s);
cout<<"inserire primo anno: ";cin>>a1;
cout<<"inserire secondo anno: ";cin>>a2;
s1=new Azienda[n];
if(s1==NULL){
    cout<<"ERRORE";
    return -1;
}
nuovo(n,s,s1,copy,a1,a2,cont);
ordina(cont,s1);
stampa(cont,s1);
delete []s;
delete []s1;
return 0;
}

void leggi(int n,Azienda s[]){
for(int i=0;i<n;i++){
cout<<"dipendente"<<i+1<<": ";
cout<<"\ninserire cognome: ";cin>>s[i].cognome;
cout<<"inserire nome: ";cin>>s[i].nome;
cout<<"inserire reparto(amm,prd,ric,mrk): ";cin>>s[i].reparto;
cout<<"inserire anno assunzione: ";cin>>s[i].anno;
cout<<"inserire matricola: ";cin>>s[i].matricola;
}
}
void nuovo(int n,Azienda s[],Azienda s1[],int copy,int a1,int a2,int& cont){
copy=0;
cont=0;
for(int i=0;i<n;i++)
if(s[i].anno>a1 && s[i].anno<a2){
s1[copy]=s[i];
copy++;
cont++;
}
}
void ordina(int copy,Azienda s1[]){
for(int t=0;t<copy;t++)
for(int i=copy-1;i>t;i--)
if(s1[i].matricola<s1[i-1].matricola)
swap(s1[i].matricola, s1[i-1].matricola);
}
void stampa(int copy,Azienda s[]){
for(int i=0;i<copy;i++){
cout<<"\ndipendente"<<i+1<<":\n "<<s[i].cognome[0]<<s[i].nome[0]<<"\n";
cout<<"reparto: "<<s[i].reparto<<"\n";
cout<<"anno di assunzione: "<<s[i].anno;
cout<<"\nmatricola: "<<s[i].matricola<<"\n";
}
}
Ultima modifica effettuata da Postese15 05/02/11 11:09
aaa
05/02/11 11:59
HeDo
per chiedere parole con lo spazio devi per forza ricorrere a getline :)
aaa
05/02/11 12:23
Postese15
però se imposto un valore,ad esempio 20,fino a quando non inserisco vendi caratterie/o spazi non mi funziona
aaa
05/02/11 12:48
HeDo
Postato originariamente da Postese15:

però se imposto un valore,ad esempio 20,fino a quando non inserisco vendi caratterie/o spazi non mi funziona


il terminatore a quel punto diventa il ritorno a capo :)
aaa
06/02/11 10:41
Postese15
ho provato ma non mi funziona perchè mi salta l inserimento del campo successivo...come potrei fare? grazie in anticipo:)
aaa
06/02/11 10:47
metti un cin.ignore appena prima dell'input successivo, per far si che si pulisca il buffer di tastiera...