allora il problema (principale , so che ancora si deve aggiustare molto ) si trova esattamente in queste righe ( ho postato il codice completo per scrupolocodice:#include <stdio.h>#include <stdlib.h> #define dim 100 int inserisci(int []); void visualizza(int [], int); void bubblesort(int [], int); int main(void){ int n; int i; int vett[dim]; int a; int scl; int ord; int elem; int num; do{ printf("--------------------\n"); printf("1)Inserisci l'array\n"); printf("2)Modifica un elemento dell'array\n"); printf("3)Ordina col metodo bubblesort\n"); printf("4)Ricerca binaria di un elemento\n"); printf("5)Visualizza L'array\n"); printf("0)Esci\n"); scanf("%d" ,&scl); if(scl < 0 || scl > 5) printf("hai inserito dei valori invalidi\n"); switch(scl){ case 1: n=inserisci(vett); break; case 2: do{ visualizza(vett, n); printf("---------------------------------------------\n"); printf("vuoi ordinare l'array in maniera crescente?\n"); printf("1)si\n"); printf("2)no,voglio modificare un elemento inserito\n"); printf("3)torna al menù precedente \n"); scanf("%d" ,&ord); if(ord <= 0 || ord > 3){ printf("errore hai inserito dei valori invalidi\n"); } switch(ord){ case 1: bubblesort(vett, n); break; case 2: printf("quale elemento vuoi modificare?\n"); scanf("%d" ,&elem); printf("che valore vuoi inserire\n?"); scanf("%d" ,&num); for(i=0; i<elem; i++){ if(vett == elem) { *(vett)=elem; } } } }while(ord != 3); break; case 5: visualizza(vett, n); break; } }while(n != 0); } int inserisci(int vett[]) { int i,n; printf("quanti elementi vuoi inserire?\n"); scanf("%d" ,&n); if(n <= 0){ printf("errore, hai inserito un valore nullo o inferiore a zero\n"); } if(n > dim){ printf("errore, hai superato il limite di oggetti da inserire: il massimo e' %d\n" ,dim); } else{ for(i=0; i<n; i++){ printf("inserisci l'elemento %d:\n" ,i+1); scanf("%d" ,&vett[i]); } } return n; } void visualizza(int vett[], int n) { int i; for(i=0 ; i<n; i++){ printf("Elemento:%d ---- Valore:%d\n" ,i+1, vett[i]); } } void bubblesort(int vett[], int n) { int i, tmp, j; for(i=0; i<n; i++){ for(j=0; j<n-i-1; j++){ if(vett[j]>vett[j+1]){ tmp=vett[j]; vett[j]=vett[j+1]; vett[j+1]=tmp; } } } }![]()
La mia intenzione era quella di poter modificare l'elemento x dell'array, di un array di cui si può decidere la grandezza, ma con un massimo di x spazi.codice:case 2: printf("quale elemento vuoi modificare?\n"); scanf("%d" ,&elem); printf("che valore vuoi inserire\n?"); scanf("%d" ,&num); for(i=0; i<elem; i++){ if(vett == elem) { *(vett)=elem; } } }
per essere più chiari:
-----------------------------------------------------
Dico che voglio inserire 30 valori
poi li ordino
se io volessi cambiare solo il 29esimo elemento che dovrei fare ?
Anzi cosa sbaglio ?
---------------------------------------------------
per ora posso utilizzare solo pointer array, e tutti i cicli ( while, for, do etc. ) non posso usare le struct o le liste.
qualcuno potrebbe spiegarmi dove sbaglio ?

Rispondi quotando
) 