89 lines
1.5 KiB
C++
89 lines
1.5 KiB
C++
/*
|
|
Nome: Mario
|
|
Cognome: Montanari
|
|
|
|
delEvenDigits & delOddDigits
|
|
*/
|
|
|
|
#include <iostream>
|
|
#include <cctype>
|
|
#include <iomanip>
|
|
|
|
#define SIZE 100+1
|
|
|
|
using namespace std;
|
|
|
|
char *delEvenDigits(char *const src);
|
|
char *delOddDigits(char *const dst);
|
|
|
|
int main(void) {
|
|
char src[SIZE] = "25dic2018";
|
|
char dst[SIZE];
|
|
|
|
strcpy(dst, src);
|
|
|
|
cout << "Original string: " << setw(10) << src << endl;
|
|
|
|
delEvenDigits(src);
|
|
cout << "delEvenDigit: " << setw(9) << src << endl;
|
|
|
|
delOddDigits(dst);
|
|
cout << "delOddDigit: " << setw(12) << dst << endl;
|
|
|
|
return 0;
|
|
}
|
|
|
|
// Con puntatori
|
|
char *delEvenDigits(char *const src) {
|
|
char *w = src;
|
|
for (char *r = src; *r != '\0'; r++) {
|
|
if (!isdigit(*r) || (*r - '0') % 2 != 0) {
|
|
*w++ = *r;
|
|
}
|
|
}
|
|
*w = '\0';
|
|
|
|
return src;
|
|
}
|
|
|
|
/* Senza puntatori
|
|
char *delEvenDigits(char *const src) {
|
|
int w = 0;
|
|
for (int r = 0; src[r] != '\0'; r++) {
|
|
if (!isdigit(src[r]) || (src[r] - '0') % 2 != 0) {
|
|
src[w++] = src[r];
|
|
}
|
|
}
|
|
src[w] = '\0';
|
|
|
|
return src;
|
|
}
|
|
*/
|
|
|
|
// Con puntatori
|
|
char *delOddDigits(char *const dst) {
|
|
char *w = dst;
|
|
for (char *r = dst; *r != '\0'; r++) {
|
|
if (!isdigit(*r) || (*r - '0') % 2 == 0) {
|
|
*w++ = *r;
|
|
}
|
|
}
|
|
*w = '\0';
|
|
|
|
return dst;
|
|
}
|
|
|
|
/* Senza puntatori
|
|
char *delOddDigits(char *const dst) {
|
|
int w = 0;
|
|
for (int r = 0; dst[r] != '\0'; r++) {
|
|
if (!isdigit(dst[r]) || (dst[r] - '0') % 2 == 0) {
|
|
// Copia
|
|
dst[w++] = dst[r];
|
|
}
|
|
}
|
|
dst[w] = '\0';
|
|
|
|
return dst;
|
|
}
|
|
*/ |