Salve, approfitto di questo topic per presentarmi, sono Andrea ho 19 anni e attualmente studio informatica.
Tra qualche giorno ho programmazione e ammetto di averlo sottovalutato un pò troppo visto che avevo conoscenze (arrugginite tra l'altro, sul c++)
Sfogliando il libro ho notato un esercizio vi posto la traccia.
Sia dato un vettore A di interi di lunghezza L ed un intero n<L con L multiplo di n. Scrivere una funzione che restituisca TRUE se la media dei valori di ogni n-upla coincide con in minimo dell'n-upla successiva.
Esempio: L=16; n=4
A=|4|28|10|18||42|36|15|31||50|31|60|63||70|51|77| 82||
L'output sarà true.
Questo è quello che son riuscito a stendere al momento, però qualunque valore metta mi dà sempre TRUE, problema credo di averlo capito.. in pratica nn mi và al blocco successivo, dovrei mettere un istruzione a fine for del main del tipo n=n*k; solo che al primo ciclo k=0 e quindi mi crasha.. idee? ecco il codice.
codice:#include <stdio.h> void leggi(int A[],int l); int media(int A[],int n,int k); int minimo(int A[],int n,int k); int main() { int l,n,k,b,m,minim; printf("Quanto deve essere lungo l'array?\n"); scanf("%d",&l); int A[l]; do { printf("Inserire n\n"); scanf("%d",&n); }while(l%n!=0||l<=n); leggi(A,l); for (k=0;l>k+1;k++) { m=media(A,n,k); minim=minimo(A,n,k); if (m==minim) b=1; else b=0; } if (b=0) printf("FALSE"); else printf("TRUE"); scanf("%d",&l); return 0; } void leggi(int A[],int l) { int i; for (i=0;i<l;i++) { printf("Inserisci il valore della cella [%d]:\n",i); scanf("%d",&A[i]); } } int media(int A[],int n,int k) { int s=0,m=0,i=k,j; for(j=0;j<n;j++) { s=s+A[i]; i++; k++; } m=s/n; return m; } int minimo(int A[],int n,int k) { int minim,j,i=k; minim=A[k]; for(j=0;j<n;j++) { if (minim>A[i]) minim=A[i]; i++; } return minim; }

Rispondi quotando