codice:
#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;
}
}
}
}
allora il problema (principale , so che ancora si deve aggiustare molto ) si trova esattamente in queste righe ( ho postato il codice completo per scrupolo
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;
}
}
}
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.
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 ?