Programma in c++
salve,
ho fatto qst programma per calcolare il minimo di un array ma nn riesco a capire perchè non funzioni infatti mi restituisce sempre il valore 4
potreste aiutarmi a capire ql è l'errore grz mille ;D
ho fatto qst programma per calcolare il minimo di un array ma nn riesco a capire perchè non funzioni infatti mi restituisce sempre il valore 4
potreste aiutarmi a capire ql è l'errore grz mille ;D
#include <iostream> using namespace std; void inserisci_vettore(); int min(int v[]); int main (){ int minimo,v[100],n; inserisci_vettore(); minimo= min(v); system("pause"); } void inserisci_vettore(){ int i,n,v[100]; cout<<"quanti numeri vuoi inserire"<<endl; cin>>n; for (i=0; i<n; i++){ cout<<"inseriscii valori"<<endl; cin>>v[i]; } } int min(int v[]){ int i,min,n; min=v[0]; for(i=0;i<n;i++){ if(v[i]<min){ min=v[i]; } } cout<<"il minimo è"<<min<<endl; return min; }
Risposte
Salve Agnypaky,
purtroppo io non ho studiato il C++ ma il C, ed con questo ti potrei dare i seguenti algoritmi:
ed anche:
Spero di averti aiutato.
Cordiali saluti
P.S.=Da quello che ho letto a riguardo del C++, ti posso dire che non dovresti avere difficoltà a tradurre interlinearmente da un algoritmo in C ad uno in C++. Che libro usi per il C++?
purtroppo io non ho studiato il C++ ma il C, ed con questo ti potrei dare i seguenti algoritmi:
RICERCA DI MASSIMO E MINIMO IN UN ARRAY MONO-DIMENSIONALE Ricercare un massimo e un minimo all'interno di array significa confrontare tutti gli elementi con loro stessi, per fare ciò si farà ricorso ad una variabile ausiliaria che verrà assegnata all'elemento iniziale dell'array e varierà all'interno del ciclo – for ogni volta che incontra un valore più grande di essa. La ricerca viene fatta almeno dopo il caricamento dell'array. Gli algoritmi per la ricerca del massimo e del minimo sono i seguenti: - RICERCA DI MASSIMO IN UN ARRAY MONO-DIMENSIONALE CON CARICAMENTO PER COLONNE #include <stdio.h> tipo nome_matrice [dimensione],max,num; int k,colon; void main(void) { . . max=nome_matrice[0]; for(k=0; k<colon; k++) { if(nome_matrice[k]>max) { max=nome_matrice[k]; } } printf("\n"); printf("\n"); printf("IL VALORE MASSIMO DELL'ARRAY E' %tipo", max); . . } - RICERCA DI MASSIMO IN UN ARRAY MONO-DIMENSIONALE CON CARICAMENTO PER RIGHE #include <stdio.h> tipo nome_matrice [dimensione],max,num; int j,righ; void main(void) { . . max=nome_matrice[0]; for(j=0; j<righ; j++) { if(nome_matrice[j]>max) { max=nome_matrice[j]; } } printf("\n"); printf("\n"); printf("IL VALORE MASSIMO DELL'ARRAY E' %tipo", max); . . } - RICERCA DI MINIMO IN UN ARRAY MONO-DIMENSIONALE CON CARICAMENTO PER COLONNE #include <stdio.h> int nome_matrice [dimensione],min,num; int k,colon; void main(void) { . . max=nome_matrice[0]; for(k=0; k<colon; k++) { if(nome_matrice[k]<min) { min=nome_matrice[k]; } } printf("\n"); printf("\n"); printf("IL VALORE MINIMO DELL'ARRAY E' %tipo", min); . . } - RICERCA DI MINIMO IN UN ARRAY MONO-DIMENSIONALE CON CARICAMENTO PER RIGHE #include <stdio.h> int nome_matrice [dimensione],min,num; int j,righ; void main(void) { . . max=nome_matrice[0]; for(j=0; j<righ; j++) { if(nome_matrice[j]<min) { min=nome_matrice[j]; } } printf("\n"); printf("\n"); printf("IL VALORE MINIMO DELL'ARRAY E' %tipo", min); . . }
ed anche:
RICERCA DI MASSIMO E MINIMO IN UN ARRAY BI – DIMENSIONALE Anche qui valgono le medesime osservazioni fatte per la ricerca di massimo e minimo in un array mono – dimensionale, ed la ricerca va fatta almeno dopo il caricamento dell'array. RICERCA DI MASSIMO IN UN ARRAY BI – DIMENSIONALE #include <stdio.h> tipo nome_matrice [dimensione][dimensione],max,num; int j,k,colon,righ; void main(void) { . . max=nome_matrice[0][0]; for(j=0; j<righ; j++) { for(k=0; k<colon; k++) { if(nome_matrice[j][k]>max) { max=nome_matrice[j][k]; } } } printf("\n"); printf("\n"); printf("IL VALORE MASSIMO DELL'ARRAY E' %tipo", max); . . } RICERCA DI MINIMO IN UN ARRAY BI – DIMENSIONALE #include <stdio.h> tipo nome_matrice [100][100],min,num; int j,k,colon,righ; void main(void) { . . min=nome_matrice[0][0]; for(j=0; j<righ; j++) { for(k=0; k<colon; k++) { if(nome_matrice[j][k]<min) { min=nome_matrice[j][k]; } } } printf("\n"); printf("\n"); printf("IL VALORE MINIMO DELL'ARRAY E' %tipo", min); . . }
Spero di averti aiutato.
Cordiali saluti
P.S.=Da quello che ho letto a riguardo del C++, ti posso dire che non dovresti avere difficoltà a tradurre interlinearmente da un algoritmo in C ad uno in C++. Che libro usi per il C++?
sisi nn ce tanta differenza tra c e c++
riesco a tradurre da sola senza nessun libro .... cmq grz lo stesso ho trovato l'errore e ke dovevo aggiungere una banalissima variabile nella funzione .....x una piccolissima cosa nn messa sballa tt


Salve Agnypaky,
sono contento che tu abbia trovato l'errore.
Cordiali saluti
sono contento che tu abbia trovato l'errore.
Cordiali saluti
"garnak.olegovitc":
Salve Agnypaky,
purtroppo io non ho studiato il C++ ma il C, ed con questo ti potrei dare i seguenti algoritmi:
Il C++ compila quasi qualsiasi codice C90 mentre ha alcune differenze con il C99. In alcune cose è più permissivo in altre è più restrittivo. Su alcune cose come i const ha un comportamenti leggermente diversi.
Nel caso del codice che hai scritto ho notato che hai usato una variabile globale. Vediamo come comportarsi nel caso di variabili locali.
#include <iostream> typedef int value_t; unsigned int const crea_vettore(value_t *); value_t const min_vettore(value_t * const, unsigned int const); void cancella_vettore(value_t * ptr) { delete[] ptr; } int main () { value_t * ptr; unsigned int const n = crea_vettore(ptr); std::cout << min_vettore(ptr, n) << std::endl; cancella_vettore(ptr); return 0; } unsigned int const crea_vettore(value_t * ptr) { unsigned int n; std::cout << "Quanti numeri vuoi inserire?" << std::endl; std::cin >> n; ptr = new value_t[n]; for(unsigned int i=0; i<n; ++i){ std::cout<<"Immetti il "<< i+1 << " valore." << std::endl; std::cin>>ptr[i]; std::cout << std::endl; } return n; } value_t const min_vettore(value_t * const ptr, unsigned int const n) { value_t min = ptr[0]; for(unsigned int i=1; i<n; ++i) { if(ptr[i] < min) min=ptr[i]; } return min; }
I const li puoi ignorare se ti confondono. Gli std:: sono invece per evitare l'using namespace std; (ci sono dei vantaggi a non usarlo).
Un modo alternativo è inoltre quello di passare l'array alla funzione invece del puntatore e non usare l'allocazione dinamica. O anche usare i vector.
Salve vict85,
sono ben consapevole delle sue osservazioni, ma non sapendo la sua preparazione mi sono limitato ad algoritmi di base, seppur modificabili in altri migliori. Preferisco, anche, una procedura bottom up, e sono contento che mi proponi algoritmi più funzionale da un punto di vista della computazione ed automazione.
P.S.=Comunque la ringrazio per le sue delucidazioni, al momento opportuno ne terrò conto
sono ben consapevole delle sue osservazioni, ma non sapendo la sua preparazione mi sono limitato ad algoritmi di base, seppur modificabili in altri migliori. Preferisco, anche, una procedura bottom up, e sono contento che mi proponi algoritmi più funzionale da un punto di vista della computazione ed automazione.
P.S.=Comunque la ringrazio per le sue delucidazioni, al momento opportuno ne terrò conto
Immaginavo che sapessi usare l'allocazione dinamica (anche se quella è una cosa in cui generalmente i programmatori C usano funzioni diverse rispetto al C++). Il codice era per completezza rispetto a Agnypaky anche perché il suo codice peccava un po' in termini di comprensione della validità di una variabile.
Ti ho quotato solo per informarti un po' di più delle differenza tra C e C++ che non sapevo quanto ne sapevi. In pratica solo per dire che potevi anche semplicemente mettere il codice senza dire che era C e non C++. Solo il primo paragrafo era riferito a te. Il resto era per lui.
Ti ho quotato solo per informarti un po' di più delle differenza tra C e C++ che non sapevo quanto ne sapevi. In pratica solo per dire che potevi anche semplicemente mettere il codice senza dire che era C e non C++. Solo il primo paragrafo era riferito a te. Il resto era per lui.
Salve vict85,
mi scuso per non avere capito chi era il destinatario del tuo messaggio, comunque il mio era un complimento nei tuoi confronti sia che tu ti riferissi a me che a qualcun'altro, e te li rifaccio molto volentieri.
Cordiali saluti
mi scuso per non avere capito chi era il destinatario del tuo messaggio, comunque il mio era un complimento nei tuoi confronti sia che tu ti riferissi a me che a qualcun'altro, e te li rifaccio molto volentieri.

Cordiali saluti