[C++] Sostituire caratteri con sequenza di interi.

Svpam

Nuovo Utente
70
2
CPU
intel core i5-2310m
HDD
1TB Western digital 5400rpm
RAM
8gb ddr3
GPU
amd ati 7310m
Monitor
samsung E2220
OS
Windows 7; ubuntu 14.04; Kali linux; debian 7
Sto facendo alcuni "semplici" esercizi in vista degli esami.

Questo è il testo dell'esercizio:
Scrivere un programma che, letti da input un intero N e un array di N caratteri, sostituisce ogni lettera dell'alfabeto inglese minuscola con la rispettiva maiuscola, e viceversa, ogni maiuscola con la rispettiva minuscola. Inoltre, sostituisce ogni carattere che non è una lettera dell'alfabeto con un carattere tra 0,1,2,3,4,5,6,7,8,9, partendo da 0, a rotazione.
Ad esempio, se N fosse pari a 15 e l’array contenesse i caratteri a % 6 & ! = A ; Z z 7 8 9 0 1
il programma dovrebbe stampare A 0 1 2 3 4 a 5 z Z 6 7 8 9 0

Questo è quello che ho scritto fin'ora:
Codice:
#include <iostream>
#include <cctype>
using namespace std;

void leggi (char *A, int dim)
{
    for(unsigned i=0; i<dim; i++)
        cin>>A[i];
}

char sostituisci(char *A, int dim)
{
    char c;
    for(unsigned i=0; i<dim; i++)    
    {
        if(A[i]>='A' && A[i]<='Z')
            A[i]=(tolower(A[i]));
        else if (A[i]>='a' && A[i]<='z')
            A[i]=(toupper(A[i]));    
        else if(!isalpha(A[i]))
            //A[i]=???????
    }
    return A[dim];
}

void stampa(char *A, int dim)
{
    for(unsigned i=0; i<dim; i++)
        cout<<"|"<<A[i]<<"| ";    
}
int main()
{
    int n;
    cin>>n;
    char *a=new char[n];
    leggi(a, n);
    sostituisci(a, n);
    stampa(a, n);

    return 0;
}

Ora quel che mi manca è la sostituzione dei caratteri che non sono lettere con i numeri da 0 a 9.
Aiuti, suggerimenti, consigli?
 

ocean62

Utente Attivo
161
38
CPU
I7 5820K Kraken X61 cooled
Scheda Madre
MSI X99 SLI PLUS
HDD
Samsung SSD 850 PRO 1TB - WD Black 2TB - WD RE 2TB
RAM
Corsair DDR4 2666GHz 32GB
GPU
Palit GTX980Ti Super JetStream
PSU
XFX XTR750 - APC SMART-UPS 1500VA SMT1500I
Case
Corsair Obsidian 450D
OS
Windows 10 pro 64
Dichiari una variabile char, p.e. n, e la inizializzi a '0' e nel terzo if la assegni a A con incremento postfisso (A = n++;). Poi controlli, sempre all'interno del terzo if, che il valore di n non sia maggiore di '9'. In quel caso la riporti a '0'.
 

Svpam

Nuovo Utente
70
2
CPU
intel core i5-2310m
HDD
1TB Western digital 5400rpm
RAM
8gb ddr3
GPU
amd ati 7310m
Monitor
samsung E2220
OS
Windows 7; ubuntu 14.04; Kali linux; debian 7
Dichiari una variabile char, p.e. n, e la inizializzi a '0' e nel terzo if la assegni a A con incremento postfisso (A = n++;). Poi controlli, sempre all'interno del terzo if, che il valore di n non sia maggiore di '9'. In quel caso la riporti a '0'.


Grazie
 

Ci sono discussioni simili a riguardo, dai un'occhiata!

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili