vuoi
o PayPal
tutte le volte che vuoi
Inserire un numero intero positivo in base 4: 21
Il numero 21 corrisponde a 9 in base 10
Inserire un numero intero positivo: 0
Hai terminato l'inserimento. Grazie
Esecuzione: #include <stdio.h>
#include <string.h>
#include <ctype.h>
// Funzione per controllare se la stringa è un numero valido in base 4
int isBase4(char numero[]) {
for (int i = 0; numero[i] != '\0'; i++) {
if (numero[i] < '0' || numero[i] > '3') {
return 0; // Non è cifra valida in base 4
}
}
return 1; // Tutte le cifre sono valide
}
// Funzione per convertire da base 4 a base 10
int base4ToBase10(char numero[]) { ff
int base10 = 0;
for (int i = 0; numero[i] != '\0'; i++) {
base10 = base10 * 4 + (numero[i] - '0');
}
return base10;
}
int main() {
char input[100];
while (1) {
printf("Inserire un numero intero positivo in base 4: ");
scanf("%s", input);
if (strcmp(input, "0") == 0) {
printf("Hai terminato l'inserimento. Grazie\n");
break;
}
if (!isBase4(input)) {
printf("Errore: il numero inserito non è valido in base 4. Riprova.\n");
continue;
}
int decimale = base4ToBase10(input);
printf("Il numero %s corrisponde a %d in base 10\n", input, decimale);
}
return 0;
}
Domanda 2( T.E 19 luglio 2024)
Si consideri il gioco dello SCRABBLE, in cui i giocatori formano delle parole usando delle piccole
tessere, ognuna contenente una lettera e un valore.
I valori di queste variano da lettera a lettera sulla base della rarità della lettera stessa:
• per le lettere A, E, I, L, N, O, R, S, T, U il valore è 10;
• per le lettere D, G il valore è 20;
• per le lettere B, C, M, P il valore è 30;
• per le lettere F, H, V, W, Y il valore è 40;
• per la lettera K il valore è 50;
• per le lettere J, X il valore è 80;
• per le lettere Q, Z il valore è 100.
Scrivere un programma in C che calcola il valore di una parola sommando il valore associato alle
sue lettere.
Esempio:
Scrivi una parola: zucca
Valore della parola: 180
Esecuzione: #include <stdio.h>
#include <string.h>
// Funzione per calcolare il punteggio di una lettera
int calcolaPunteggio(char lettera) {
// Convertire la lettera in maiuscolo per uniformità
lettera = (lettera >= 'a' && lettera <= 'z') ? lettera - 'a' + 'A' : lettera;
switch(lettera) {
case 'A': case 'E': case 'I': case 'L': case 'N': case 'O': case 'R': case 'S': case 'T': case 'U':
return 10;
case 'D': case 'G':
return 20;
case 'B': case 'C': case 'M': case 'P':
return 30;
case 'F': case 'H': case 'V': case 'W': case 'Y':
return 40;
case 'K':
return 50;
case 'J': case 'X':
return 80;
case 'Q': case 'Z':
return 100;
default:
return 0; // In caso di carattere non valido
}
}
int main() {
char parola[100];
int punteggioTotale = 0;
// Chiedere all'utente di inserire una parola
printf("Scrivi una parola: ");
scanf("%s", parola);
// Calcolare il punteggio totale della parola
for (int i = 0; parola[i] != '\0'; i++) {
punteggioTotale += calcolaPunteggio(parola[i]);
}
// Stampare il risultato
printf("Valore della parola: %d\n", punteggioTotale);
return 0;
}
Domanda 2(T.E 28 giugno 2024)
Scrivere un programma in linguaggio C che:
1) crea una matrice A di 4 righe e 3 colonne, i cui elementi sono numeri interi minori di 10
generati casualmente attraverso la funzione rand();
2) 3) 4) crea un vettore B di 3 elementi interi con i seguenti valori: 2, 4, 3;
calcola il vettore C come risultato del prodotto fra la matrice A e il vettore B;
se esiste, stampa la somma degli elementi pari del vettore C;
5) se non esistono elementi pari nel vettore C, stampa: “nel vettore prodotto non
sono presenti elementi pari”
Esempio:
matrice:
6 1 2
3 5 7
2 9 1
3 8 2
vettore:
2 4 3
vettore prodotto:
22 47 43 44
Stampa (se esistono elementi pari come nell’esempio):
la somma degli elementi pari del vettore prodotto: 66
Stampa (se non esistono elementi pari):
nel vettore prodotto non sono presenti elementi pari
Esecuzione: #include <stdio.h>
#include <stdlib.h>
#include <time.h>
#de ne ROWS 4
#de ne COLS 3
int main() {
int A[ROWS][COLS]; // Matrice 4x3
int B[COLS] = {2, 4, 3}; // Vettore B con 3 elementi
int C[ROWS]; // Vettore C che conterrà il risultato del prodotto
// Inizializzazione del generatore di numeri casuali
srand(time(NULL));
// Generazione casuale della matrice A (numeri interi minori di 10)
printf("Matrice A:\n");
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
A[i][j] = rand() % 10; // Numero casuale tra 0 e 9
printf("%d ", A[i][j]);
}
printf("\n");
}
// Calcolo del vettore C (prodotto matrice A per vettore B)
for (int i = 0; i < ROWS; i++) {
C[i] = 0;
for (int j = 0; j < COLS; j++) {
C[i] += A[i][j] * B[j];
}
}
// Stampa del vettore C
printf("Vettore prodotto C:\n");
for (int i = 0; i < ROWS; i++) {
printf("%d ", C[i]);
}
printf("\n");
// Calcolo della somma degli elementi pari nel vettore C
int sommaPari = 0;
int trovatoPari = 0; // Flag per veri care se ci sono numeri pari
for (int i = 0; i < ROWS; i++) {
if (C[i] % 2 == 0) {
sommaPari += C[i];
trovatoPari = 1;
}
}
// Stampa della somma degli elementi pari o messaggio di errore
if (trovatoPari) {
printf("La somma degli elementi pari del vettore prodotto: %d\n", sommaPari);
} else {
printf("Nel vettore prodotto non sono presenti elementi pari\n");
}
return 0;
}
fi
fi fi
Domanda 2( T.E 13 giugno 2024)
Scrivere un programma C che:
• richiede a un utente di inserire un numero composto da 4 cifre pari;
• inserisce le cifre del numero in un vettore di 4 elementi;
• ordina i valori contenuti negli elementi del vettore dal più piccolo al più grande;
• stampa i valori contenuti negli elementi del vettore nel nuovo ordine.
Esempio:
6824
Inserire un numero composto da 4 cifre pari:
Stampa:
2468
Esecuzione: #include <stdio.h>
int main() {
int numero;
int cifre[4];
// Chiedi all'utente di inserire un numero di 4 cifre pari
printf("Inserire un numero composto da 4 cifre pari: ");
scanf("%d", &numero);
// Controlla che il numero sia composto da 4 cifre pari
if (numero < 1000 || numero > 9999) {
printf("Errore: il numero deve essere composto da 4 cifre.\n");
return 1;
}
// Estrai le cifre del numero e le inserisci nel vettore
for (int i = 3; i >= 0; i--) {
cifre[i] = numero % 10; // Estrai l'ultima cifra
numero /= 10; // Rimuovi l'ultima cifra
}
// Ordina il vettore (usando un semplice algoritmo di ordinamento, ad esempio il Bubble Sort)
for (int i = 0; i < 3; i++) {
for (int j = i + 1; j < 4; j++) {
if (cifre[i] > cifre[j]) {
// Scambia le cifre
int temp = cifre[i];
cifre[i] = cifre[j];
cifre[j] = temp;
}
}
}
// Stampa il vettore ordinato
printf("Stampa:\n");
for (int i = 0; i < 4; i++) {
printf("%d", cifre[i]);
}
printf("\n");
return 0;
}
Domanda 2(T.E 6 febbraio 2024)
Scrivere un programma C:
1) colonne;
2) colonna;
acquisisce da tastiera 100 numeri interi e li inserisce in una matrice di 10 righe e 10
somma i numeri inseriti nelle posizioni della matrice aventi lo stesso indice di riga e di
3) stampa a video la somma di cui al punto (2) solo se questa risulta essere maggiore di 50.
Esecuzione: #include <stdio.h>
int main() {
int matrice[10][10];
int somma = 0;
// Acquisizione dei numeri e inserimento nella matrice
printf("Inserisci 100 numeri interi (10 righe e 10 colonne):\n");
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
printf("Numero in posizione [%d][%d]: ", i, j);
scanf("%d", &matrice[i][j]);
}
}
// Somma degli elementi sulla diagonale principale (indici i == j)
for (int i = 0; i < 10; i++) {
somma += matrice[i][i]; // Somma gli elementi della diagonale principale
}
// Stampa della somma, se maggiore di 50
if (somma > 50) {
printf("La somma degli elementi sulla diagonale principale è: %d\n", somma);
} else {
printf("La somma degli elementi sulla diagonale principale non è maggiore di 50.\n");
}
return 0;
}
Domanda 2( T.E 18 gennaio 2024)
Scrivere un programma C che:
1) Richiede all’utente di inserire una successione di 5 numeri, interi, diversi, multipli di 7, in
caso di inserimento di un numero non multiplo di 7, il programma deve segnalare l’errore e
permettere l’inserimento di un valore corretto;
Stampa (a video) la somma dei valori pari inseriti;
Stampa (a video) la somma dei valori dispari inseriti;
Stampa (a video) la somma maggiore.
2) 3) 4) Esempio:
Inserire una successione di 5 numeri diversi multipli di 7:
14 35 28 77 56
Somma valori pari: 98
Somma valori dispari: 112
Stampa (se esiste come nell’esempio):
la somma maggiore è 112
Stampa (se le somme sono uguali):
le due somme sono uguali
Esecuzione: #include <stdio.h>
int main() {
int numeri[5];
int sommaPari = 0, sommaDispari = 0;
// Acquisizione dei 5 numeri multipli di 7
printf("Inserire una successione di 5 numeri diversi multipli di 7:\n");
for (int i = 0; i < 5; i++) {
int valido = 0; // Flag per veri care che il numero sia valido
while (!valido) {
printf("Inserisci il numero %d: ", i + 1);
scanf("%d", &numeri[i]);
// Veri ca se il numero è un multiplo di 7
if (numeri[i] % 7 == 0) {
valido = 1; // Il numero è valido
} else {
printf("Errore: il numero inserito non è un multiplo di 7. Riprova.\n");
}
}
}
// Calcolo della somma dei numeri pari e dispari
for (int i = 0; i < 5; i++) {
if (numeri[i] % 2 == 0) {
sommaPari += numeri[i];
} else {
sommaDispari += numeri[i];
}
}