Notifiche
Cancella tutti

[Risolto] Qualcuno mi può aiutare per questo esercizio di informatica?

  

0

Si implementi un progetto Dev-C organizzato con file di intestazione .h e .c con le seguenti funzioni.
- void stampaNumeriDispari(int numNumeri); che stampa i numeri dispari partendo da 1. Il numero di numeri da stampare è specificato dal parametro 'numNumeri'
- void toUpper(char *testo); che converte in maiuscolo il testo passato come parametro.

Si richiamino le funzioni nel main per verificarne il funzionamento (non serve menu)

Autore
2 Risposte



2

Ti propongo una soluzione molto base (dovrebbe essere corretta, l'editor codice mi ha tagliato alcuni caratteri), non ci sono controlli su cosa immette l'utente e potrebbe essere ottimizzato in diversi modi.

Per alcune variazioni su toUpper

Advice on creating a toupper function fo - C++ Forum (cplusplus.com)

c - How this custom toupper() function works? - Stack Overflow

HEADER (myHeader.h)

void StampaNumeriDispari(int n);

void toUpper(char *testo);

 

FILE .C (myCfile.c) Versione 1, tramite funzione già esistente nella libreria ctype

#include<ctype.h>

#include 
#include 
#inlcude "myHeader.h"

void toUpper(char *testo){
char ch;
int i=0;
while(testo[i]){
     ch = testo[i];
     putchar(toupper(ch));
     j++;
    }
}

void StampaNumeriDispari(int n){

printf("I numeri dispari compresi tra 1 ed %d sono:\n",n);

for(int i=1;i <=n;i++) {
     if(i%2 !=0)
     printf("%d \n",i);
    }
}

 FILE.C (myCfile.c) versione 2

#include <string.h>

#include 
#include  
#include "myHeader.h"

void toUpper(char* testo){
int i;
int len = strlen(testo);
char testo1 [len];

for( i = 0; testo[i]; i++) {
    if(testo[i] >= 'a' && testo[i] <= 'z') {
          testo1[i] = testo[i] - 32;
      }
else{
   testo1[i] = testo[i];
     }
}//for
printf("Stringa convertita: %s\n", testo1);
}

void StampNumeriDispari(int n){
printf("I numeri dispari compresi tra 1 ed %d sono:\n",n);


for(int i=1;i <=n;i++) {
   if(i%2 !=0)
     printf("%d \n",i);
  }
}

MAIN (main.c)

 

include 
include "myHeader.h"

int main (void){

toUpper("TeSt342");
StampaNumeriDispari(14);

return 0;

}

@lorenzo_belometti Grazie mille!



2

Caro Silvio, da quasi conterraneo (Murzaku dovrebb'essere un cognome salentino o, almeno, albanese) ti assicuro che "questo esercizio di informatica" non è di Informatica, ma solo di Esercitazioni di Codifica; te lo dico con le certezze che mi derivano dall'avere insegnato una qualche materia dell'indirizzo di Informatica dal 1970/71 al 2004/05 ininterrottamente ogni santo anno scolastico.
Non ti mostrerò la codifica perché devi imparare da te a gestire manuali e messaggi d'errore (questo è fra gli scopi delle ore di Laboratorio); però ti spiego la struttura da dare al tuo codice.
------------------------------
Per entrambe le routine basta un solo ciclo che
1) per ogni indice k da uno a numNumeri
oppure
2) per ogni carattere c da un estremo all'altro del testo
esegua l'azione del caso
1) emettere 2*k - 1
oppure
2) porre c = up(c)
---------------
La funzione "up(c)", definita su caratteri da otto bit codificati in ISO-ANSI,
pone n = codiceCarattere(c)
* se n < 97 restituisce c
* se n > 122 restituisce c
* se 96 < n < 123 restituisce carattere(n - 32)

@exprof Buonasera, non ha importanza se sono albanese o no. Si questo è un esercizio di informatica perché c’era nella verifica. L’ho postato perché pensavo che qualcuno mi potesse aiutare, ma va bene comunque. Grazie mille per la sua risposta! Buona serata!



Risposta