PDA

View Full Version : [C++] Programmino


Racer89
09-01-2008, 21:18
ciao a tutti
ho fatto questo programmino ma non funziona bene
questa è la traccia:


Scrivere un programma che dato un vettore di caratteri Testo (n) letto dalla tastiera lo ordini in senso crescente ed elimini dal vettore Testo tutti i caratteri cifra (0-9) che andranno memorizzati in un nuovo vettore Cifre.

il programma, per ottenere il risultato, dovrà utilizzare (scnza scriverne il codice) i seguenti sotto programmi;

- void leggi_testo (char V[],int &ncar);
che acquisisce da tastiera gli elementi del vettore scartando eventali caratteri diversi da cifre e lettere.

- void ordina (char V[],int ncar);
che ordina in senso crescente un vettore di caratteri e scrivendone il codice ed il prototipo, il seguente sottoprogramma:

- sottoprogramma estrai_cifre che a partire da un vettore ordinato di caratteri copia tutte le cifre in un nuovo vetore eliminandole dal vettore di partenza.

N.B.Si ricorda che nel tipo carattere le cifre precedno sia le lettere maiuscole che le lettere minuscole.

E poi qui c'è il disegno del vettore formato da 11 caselle in cui ci sn lettere e numeri:

vettore letto da tastiera: Testo
b s A 2 5 f K 4 t 4 m

vettore: Testo
A K bfmst

vettore: Cifre
2 4 4 5


e questa la mia soluzione:

#include <cstdlib>
#include <iostream>

using namespace std;

void leggi_testo(char V[],int &ncar);
void ordina(char V[],int ncar);
void scambia(char &a,char &b);
void estrai_cifre(char V[],int &ncar,int C[],int &ncif);
void stampavet1(char vet[],int dim);
void stampavet2(int vet[],int dim);

int main(int argc, char *argv[])
{
char V[100];
int C[100],ncar,ncif;
leggi_testo(V,ncar);
ordina(V,ncar);
estrai_cifre(V,ncar,C,ncif);
cout<<"\nVettore Testo: \n";
stampavet1(V,ncar);
cout<<"\nVettore Cifre: \n";
stampavet2(C,ncif);
system("PAUSE");
return EXIT_SUCCESS;
}

void leggi_testo(char V[],int &ncar)
{
int i;
cout<<"Inserisci la dimensione del vettore: ";
cin>>ncar;
for(i=0;i<ncar;i++)
{
cout<<"Inserisci in carattere di posto "<<i<<": ";
cin>>V[i];
}
}

void ordina(char V[],int ncar)
{
int i,j;
for(i=0;i<ncar-1;i++)
for(j=i+1;j<ncar;j++)
if(V[j]<V[i]) scambia(V[j],V[i]);
}

void scambia(char &a,char &b)
{
int app;
app=a;
a=b;
b=app;
}

void estrai_cifre(char V[],int &ncar,int C[],int &ncif)
{
int i=0,z=0,j;
while(V[i]<=9&&i<ncar)
{
C[i]=V[i];
i++;
}
ncif=i;

for(j=i;j<ncar;j++)
{
V[z]=V[j];
z++;
}
ncar=z;
}

void stampavet1(char vet[],int dim)
{
int i;
for(i=0;i<dim;i++)
cout<<vet[i]<<" ";
}

void stampavet2(int vet[],int dim)
{
int i;
for(i=0;i<dim;i++)
cout<<vet[i]<<" ";
}


grazie in anticipo ;)