25/11/2018, 12:19
#include <stdio.h>
int sequenzaalfabeticaric(char prev){
char c;
scanf("%c",&c);
if((c>='a' && c<='z')||(c>='A' && c<='Z')){
if((c>='a' && c<='z')){
printf("%c",c);
return 0+sequenzaalfabeticaric(c);
}
else if((c>='A' && c<='Z')&&(prev>='a' && prev<='z')){
printf("%c",c);
return 0+sequenzaalfabeticaric(c);
}
else return 1+sequenzaalfabeticaric(c);
}
else{
printf("Sequenza modificata: \n");
return 0;
}
}
int main() {
char c;
scanf("%c",&c);
printf("%c",c); //problema di stampa del primo valore
printf("Il numero di elementi scartati è:%d\n",sequenzaalfabeticaric(c));
return 0;
}
25/11/2018, 16:20
#include <iostream>
using namespace std;
int fun(bool prev_is_lower = false)
{
char c;
cout << "--> ";
cin >> c;
bool curr_is_upper = c >= 'A' && c <= 'Z';
if(curr_is_upper || (c >= 'a' && c <= 'z'))
{
if(!(curr_is_upper && !prev_is_lower))
{
cout << c << endl;
}
return !prev_is_lower * curr_is_upper + fun(!curr_is_upper);
}
return 0;
}
int main()
{
cout << "CARATTERI SCARTATI: " << fun();
}
25/11/2018, 17:12
AsaAABbScedjfnkanfsdM
oppure se tra i caratteri ci sono gli spazi. Dal modo in cui il tutto verrebbe visualizzato suppongo che si debba implementare la prima versione. Usando una funzione di appoggio invece che una variabile si può fare così:#include "ctype.h"
#include "stdio.h"
int strange_read();
int strange_read_state_2();
int main(void)
{
int scartati = strange_read();
printf("\nscartati=%d", scartati);
}
int strange_read()
{
int ch = getc(stdin);
if (ch == EOF || !isalpha(ch))
{
return 0;
}
if (islower(ch))
{
putc(ch, stdout);
return strange_read_state_2();
}
return 1 + strange_read();
}
int strange_read_state_2()
{
int ch = getc(stdin);
if (ch == EOF || !isalpha(ch))
{
return 0;
}
putc(ch, stdout);
if (isupper(ch))
{
return strange_read();
}
return strange_read_state_2();
}
25/11/2018, 21:17
26/11/2018, 00:50
#include <stdio.h>
int fun(int prev_is_lower)
{
char c;
printf("--> ");
scanf(" %c", &c);
int curr_is_upper = c >= 'A' && c <= 'Z';
if(curr_is_upper || (c >= 'a' && c <= 'z'))
{
if(!(curr_is_upper && !prev_is_lower))
{
printf("%c\n", c);
}
return !prev_is_lower * curr_is_upper + fun(!curr_is_upper);
}
return 0;
}
int main()
{
printf("CARATTERI SCARTATI: %d", fun(0));
return 0;
}
#include <stdio.h>
int fun(int prev_is_lower)
{
char c;
printf("--> ");
scanf(" %c", &c);
int curr_is_upper = c >= 'A' && c <= 'Z';
int curr_is_lower = c >= 'a' && c <= 'z';
if(curr_is_upper || curr_is_lower)
{
if(curr_is_lower || (curr_is_upper && prev_is_lower))
{
printf("%c\n", c);
}
return !prev_is_lower * curr_is_upper + fun(curr_is_lower);
}
return 0;
}
int main()
{
printf("CARATTERI SCARTATI: %d", fun(0));
return 0;
}
26/11/2018, 13:19
26/11/2018, 22:35
27/11/2018, 10:06
28/11/2018, 13:50
Skuola.net News è una testata giornalistica iscritta al Registro degli Operatori della Comunicazione.
Registrazione: n° 20792 del 23/12/2010.
©2000—
Skuola Network s.r.l. Tutti i diritti riservati. — P.I. 10404470014.
Powered by phpBB © phpBB Group - Privacy policy - Cookie privacy
phpBB Mobile / SEO by Artodia.