Esercizio in c++ (stringa di caratteri alfanumerici)

di il
11 risposte

Esercizio in c++ (stringa di caratteri alfanumerici)

Non riesco a far funzionare questo programma in c++...potreste gentilmente dargli un occhiata?
(il programma deve ricevere dieci caratteri alfanumerici cercare la A e stampare in un altro vettore le posizioni nelle quali si trova).

test.cpp
#include <iostream>
#include "esame.h"
#define N 11
//Il programma cerca il carattere A tramite sottoprogramma
using namespace std;
int main () {
int i;
char sqi[N];
char squ[N];
cout<<"Salve, inseriamo 10 caratteri: \n";
for (i=0; i<10; i++) {
cout<<"Inseriamo quello nella posizione "<<i<<endl;
cin>>sqi;
}
sqi[N]='\0';
cerca (sqi, squ);
cout<<squ<<endl;
system("pause");
return 0;
}

implementazione
esame.cpp
#include <iostream>
#include "esame.h"

using namespace std;

void cerca (const char str[], char pro[]) {
int i,j;
j=0;
for ( i=0;i<10; i++) {
if (str == 'A')
{
pro[j]=i;
j=j+1;
}
}
pro[j]='\0';
}

intestazione
esame.h
void cerca (char const [], char []);

11 Risposte

  • Re: Esercizio in c++ (stringa di caratteri alfanumerici)

    Ciao, ecco il codice corretto:
    
    #include <iostream>
    #define N 11
    
    using namespace std;
    
    void cerca (char const [], char []);
    
    int main () {
    	int i;
    	char sqi[N];
    	char squ[N];
    	cout<<"Salve, inseriamo 10 caratteri: \n";
    	for (i=0; i<10; i++) {
    		cout<<"Inseriamo quello nella posizione "<<i<<endl;
    		cin>>sqi[i];
    	}
    	sqi[N-1]='\0';
    	cerca (sqi, squ);
    
    	cout<<squ<<endl;
    	return 0;	
    }
    
    void cerca (const char str[], char pro[]) {
    	int i,j;
    	j=0;
    	for ( i=0;i<10; i++) {
    		if (str[i] == 'A')
    		{
    			pro[j] = i + '0';
    			j=j+1;
    		}	
    	}
    	pro[j]='\0';
    }
    
    L'errore stava nel fatto che utilizzi un vettore di char per memorizzare le posizioni (che sono interi), quindi devi fare quel giochetto di sommare '0'.
  • Re: Esercizio in c++ (stringa di caratteri alfanumerici)

    Grazie ora funziona. ma se sono dei numeri interi non potrei usare la denominazione "int" invece che char per V2 ed eliminare il carattere di terminazione?
  • Re: Esercizio in c++ (stringa di caratteri alfanumerici)

    Sì, quella sarebbe la strada più semplice. Io davo per scontato che tu volessi tenere array di char...
  • Re: Esercizio in c++ (stringa di caratteri alfanumerici)

    Il problema è che in questo caso mi stampa come risultato 0x23fe10
  • Re: Esercizio in c++ (stringa di caratteri alfanumerici)

    Beh ovviamente dovresti cambiare anche la stampa... Un array di interi non si stampa con un cout ma, ad esempio, con un ciclo for.
  • Re: Esercizio in c++ (stringa di caratteri alfanumerici)

    Perfetto ci avevo già pensato ma credevo che al contrario del pascal lo stampasse direttamente xD grazie mille
  • Re: Esercizio in c++ (stringa di caratteri alfanumerici)

    Ma io assegnando una dimensione se il numero di valori non è quello dato avrò in stampa una serie di "0" finali
    come posso eliminarli?
    0
  • Re: Esercizio in c++ (stringa di caratteri alfanumerici)

    Intendi dire che se i caratteri non sono tutti 'A' allora il vettore delle posizioni contiene degli zeri finali? Beh quello è normale... dopotutto a quello serviva il carattere di terminazione!
    Per risolvere puoi usare diversi modi: ad esempio tenere un contatore di tutte le 'A' che incontri e poi stampare solo quegli elementi del vettore delle posizioni.
  • Re: Esercizio in c++ (stringa di caratteri alfanumerici)

    Scusate il disturbo qualcuno mi spiega perchè in questa versione del precedente programma la stampa mi si conclude con un 1?
    #include <iostream>
    #include "esame.h"
    #define N 10
    //Il programma cerca il carattere A tramite sottoprogramma 
    using namespace std;
    int main () {
    			int i;
    			int c;
    			char V1[N];
    			int V2[N];
    			cout<<"Salve, inseriamo 10 caratteri: \n";
    			for (i=0; i<10; i++) {
    								cout<<"Inseriamo quello nella posizione "<<i<<endl;
    								cin>>V1[i];
    								}
    			V1[i]='\0';
    			cout<<endl;
    cerca (V1, V2, c);
    for(i=0;i<c; i++){
    						cout<<V2[i]<<endl;	
    						}
    system ("pause");
    return 0;			
    }
    
    #include <iostream>
    #include "esame.h"
    
    using namespace std;
    
    void cerca (const char str[], int pro[], int &c ) {
    	int i,j;
    	j=0;
    	for ( i=0;i<10; i++) {
    						if (str[i] =='A')
    										{
    										pro[j]=i;
    										j=j+1;
    										c=c+1;									
    										}			
    	                }	   
    }
    										
    											
    						
    
    void cerca (const char [], int [], int );
    
  • Re: Esercizio in c++ (stringa di caratteri alfanumerici)

    Mi spiegate come mai mi è bastata un altra & nel prototipo dopo int e mettere un c-1 nel for
    for(i=0;i<c-1; i++)
    perchè funzionasse...
  • Re: Esercizio in c++ (stringa di caratteri alfanumerici)

    Problema risolto xD
Devi accedere o registrarti per scrivere nel forum
11 risposte