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
SOS Matematica

4.6
SCARICA