Salve a tutti,
Sono nuovo e mi sono appena presentato nell'apposito topic.
Sto affrontando lo studio dell'esame di Elementi di Informatica da 6 CFU.
Ho seguito questo corso anni fa con un professore che faceva usare il C.
Purtroppo non sono riuscito a dare questo esame con lui e, nel frattempo, il nuovo professore ha cominciato a tenere un corso in C/C++ (insomma ha "mantenuto la retrocompatibilità" coi vecchi alunni).
Nell'ultimo esame che, purtroppo, non sono riuscito a passare, vi era una traccia basata tutta sugli array di caratteri.
Io ero abituato a trattare con le stringhe e ad utilizzare funzioni come la getchar () ma, a quanto pare, non essendo in programma non ne era consentito l'utilizzo; inoltre la traccia chiedeva espressamente l'inizializzazione di un array di caratteri e non di una stringa.
Ad ogni modo, mi sono documentato in questi giorni e sono riuscito a scrivere questo pezzo di codice che compila e funziona. Tuttavia ho sentito la necessità di chiedere a qualcuno più esperto di me se il programma in questione sia "formalmente" corretto.
Questa è la traccia, io ho completato per adesso solo alcuni punti
E questo è il mio codice
#include <stdio.h>
#define MAX_C 20
char V [MAX_C];
void gestioneSequenza (void);
int immissione (void);
void stampaElemento (int, int);
void stampa (int);
void stampaInversa (int);
int main () {
gestioneSequenza();
}
void gestioneSequenza () {
int n;
int scelta = -1;
int pos;
while (scelta != 0) {
printf ("\n***** MENU' *****");
printf ("\n1. Immissione caratteri e stampa rovescia\n");
printf ("\n2. Stampa array di caratteri\n");
printf ("\n3. Stampa elemento\n");
printf ("\n0. Fine\n");
printf ("***** FINE MENU' *****\n");
printf ("\nScegli un'opzione dal menu': ");
scanf ("%d", &scelta);
switch (scelta) {
case 1: n=immissione();
stampaInversa(n);
break;
case 2: stampa(n);
break;
case 3: printf ("\nInserisci posizione da stampare: ");
scanf ("%d", &pos);
stampaElemento (n, pos);
break;
}
}
}
int immissione () {
int n;
int i;
char invio;
printf ("\nQuanti caratteri desideri inserire? ");
scanf ("%d", &n);
for (i=0;i<n;i++) {
printf ("\nInserisci %d° carattere: ", i+1);
scanf ("%c", &invio);
scanf ("%c", &V[i]);
}
return n;
}
void stampa (int n) {
int i;
for (i=0; i<n; i++) {
printf ("\nIl %d° carattere e': %c\n", i+1, V[i]);
}
}
void stampaElemento (int n, int pos) {
int i;
for (i=0;i<n;i++) {
if(pos==i) {
printf ("\nLa posizione %d e' occupata dall' elemento %c\n", pos, V[i]);
}
}
}
void stampaInversa (int n) {
int i;
for (i=n-1; i>=0; i--) {
printf ("\nIl %d° carattere e': %c\n", i+1, V[i]);
}
}
Grazie a chiunque mi dia una mano.