n = 1 n = 2 n = 3 n = 4 n = 5 n = 6 n = 8 n = 9 1 11 010 0110 00100 001100 00011000 000010000 11 111 1111 01110 011110 00111100 000111000 010 1111 11111 111111 01111110 001111100 0110 01110 111111 11111111 011111110 00100 011110 11111111 111111111 001100 01111110 011111110 00111100 001111100 00011000 000111000 000010000
3 4 19 1 2 7 18 5 10 3 12 7 5 6 15 8allora la funzione ritorna 2.
void MinMax(float A[], long n) { long i, pmin = 0, pmax = 0; //pmin conterra' la posizione del minimo float min = A[0], max = A[0]; //e pmax quella del massimo. for (i = 1 ; i < n ; i++) { //determina il minimo, il massimo e if (A[i] < min) { //le relative posizioni. min = A[i]; pmin = i; } if (A[i] > max) { max = A[i]; pmax = i; } } A[pmin] = max; //scambia le posizioni del minimo A[pmax] = min; //e del massimo. }
void MinMax(float A[], long n) { long i, pmin = 0, pmax = 0; //pmin e pmax conterranno le posizioni del minimo e del massimo. for (i = 1 ; i < n ; i++) //determina pmin e pmax if (A[i] < A[pmin]) pmin = i; else if (A[i] > A[pmax]) pmax = i; float x = A[pmin]; //scambia tra loro le posizioni del minimo e del massimo. A[pmin] = A[pmax]; A[pmax] = x; }
/* funzione ausiliaria che ritorna vero o falso a seconda che il carattere ch appaia o meno nella stringa C */ int IsInC(char ch, char C[]) { long i = 0; while (C[i] != '\0' && C[i] != ch) i++; return (C[i] == ch); } long LenS(const char T[], const char C[]) { long max = 0, curr = 0, k = 0; while (T[k] != '\0') { //per ogni carattere di T if (IsInC(T[k], C)) curr++; //se appare in C, incrementa la lunghezza corrente else { //altrimenti aggiorna eventualmente la if (curr > max) max = curr; //lunghezza massima finora trovata e curr = 0; //riporta a zero la lunghezza corrente. } k++; } if (curr > max) max = curr; //aggiorna eventualmente la lunghezza massima return max; }
long LenS(const char T[], const char C[]) { long max = 0, curr = 0, k = 0; while (T[k] != '\0') { //per ogni carattere di T long i = 0; //controlla se appare in C while (C[i] != '\0' && C[i] != T[k]) i++; if (C[i] == T[k]) { //se appare in C, curr++; //incrementa la lunghezza corrente e if (curr > max) max = curr; //aggiorna la lunghezza massima finora trovata. } else curr = 0; //altrimenti azzera la lunghezza corrente k++; } return max; }
#include <stdio.h> int main() { int n, r, c; scanf("%d", &n); //leggi la dimensione n della matrice int s = (n - 1)/2, d = n/2; //s contiene la posizione del primo 1 for (r = 0 ; r < n ; r++) { //della riga e d la posizione dell'ultimo for (c = 0 ; c < n ; c++) if (c < s || c > d) printf("0"); else printf("1"); printf("\n"); if (r < (n - 1)/2) { s--; d++; } //aggiorna s e d per la prossima riga else if ( r >= n/2) { s++; d--; } } return 0; }
#include <stdio.h> int main() { int n; scanf("%d", &n); //leggi la dimensione n della matrice int M[n][n], r, c, s = (n - 1)/2, d = n/2; for (r = 0 ; r <= (n - 1)/2 ; r++) { //definisci la prima meta' delle righe for (c = 0 ; c < n ; c++) M[r][c] = (c < s || c > d ? 0 : 1); s--; d++; } for ( ; r < n ; r++) //definisci la seconda meta' delle righe for (c = 0 ; c < n ; c++) //ribaltando le righe della prima meta' M[r][c] = M[n - 1 - r][c]; for (r = 0 ; r < n ; r++) { //stampa la matrice for (c = 0 ; c < n ; c++) printf("%d", M[r][c]); printf("\n"); } return 0; }
int Saddle(int n, const float M[][n]) { float min, max; int i, j; for (i = 0 ; i < n ; i++) { //per ogni i, calcola il massimo della min = max = M[i][i]; //riga i e il minimo della colonna i for (j = 0 ; j < n ; j++) if (M[i][j] > max) max = M[i][j]; else if (M[j][i] < min) min = M[j][i]; if (min == max) return i; //se il massimo e il minimo sono uguali, ritorna i } return -1; //se non c'e' un indice che soddisfa la condizione ritorna -1 }
int Saddle(int n, const float M[][n]) { int i, j; for (i = 0 ; i < n ; i++) { //per ogni indice i (di riga o di colonna) float max = M[i][0]; //calcola il massimo della riga i for (j = 1 ; j < n ; j++) if (M[i][j] > max) max = M[i][j]; float min = M[0][i]; //calcola il minimo della colonna i for (j = 1 ; j < n ; j++) if (M[j][i] < min) min = M[j][i]; if (min == max) return i; //se sono uguali, ritorna i } return -1; //se non c'e' un indice che soddisfa la condizione ritorna -1 }
long *Ric(const int V[], long n, int x, long *nj) { long i, m = 0; long *ind = NULL; for (i = 0 ; i < n ; i++) //calcola in m il numero di indici if (V[i] == x) m++; //in cui appare x if (m > 0) { ind = malloc(m*sizeof(long)); //alloca un vettore per mantenere long k = 0; //gli m indici for (i = 0 ; i < n ; i++) //e registra gli indici nel vettore if (V[i] == x) ind[k++] = i; } *nj = m; //restituisci in *nj il numero di indici return ind; //ritorna il vettore allocato oppure NULL }
long *Ric(const int V[], long n, int x, long *nj) { long i, m = 0; long *ind = NULL; for (i = 0 ; i < n ; i++) //per ogni indice del vettore V if (V[i] == x) { //se contiene il valore x ind = realloc(ind, (m + 1)*sizeof(long)); //rialloca il vettore degli indici pos[m++] = i; //per mantenere un indice in piu' } *nj = m; //restituisci in *nj il numero di indici return ind; //ritorna il vettore allocato oppure NULL }
![]() |
![]() |
Questo sito usa cookies, usandolo ne accettate la presenza. (CookiePolicy)
Torna al Dipartimento di Informatica ![]() |
|
![]() |
![]() |