Salve ragazzi ho un problema con un programma in C, ebbene il programma deve prevedere che : inserito un vettore e il suo riempimento da tastiera, chieda all'utente di inserire un valore x e quindi stampare un nuovo vettore a partire dalla prima occorrenza di x nel primo vettore inserito. Io ho scritto il codice che vi propongo funziona il problema è che nel vettore finale che stampa inserisce numeri in più non richiesti, mi chiedevo come potessi modificarlo. Da premettere che è un esercizio per un esame di elementi di informatica ad un livello piuttosto semplice, cioè non sono stati presi in considerazione vettori allocati dinamicamente,liste,ecc al max abbiamo introdotto dei puntatori.
#include <stdio.h>
#include <stdlib.h>
#define N 100
void leggi_vettore(int[], int);
void stampa_vettore(int[],int);
void ordina(int[],int);
int scambia(int *,int *);
int ricerca_lineare(int[],int,int);
int main(int argc, char *argv[]) {
int V[N];
int V2[N];
int i,n,x,j;
int elementi2=0;
printf("Numero elementi nel vettore\n");
scanf("%d", &n);
leggi_vettore(V,n);
ordina (V,n);
stampa_vettore(V,n);
printf("Inserire l'elemento x da cui partire per la stampa del secondo vettore\n");
scanf("%d", &x);
int element=ricerca_lineare(V,n,x);
if(element!=-1){
for(i=element; i<n; i++){
V2[elementi2]=V[i];
elementi2++;
}
for(i=0;i<n;i++){
printf("Il vettore modificato:%d\n", V2[i]);
}
}
system("PAUSE");
return 0;
}
/*leggi vettore*/
void leggi_vettore(int a[], int s){
int i;
for(i=0; i<s;i++){
printf("Inserire elemento di posto %d:", i);
scanf("%d", &a[i]);
}
}
/*Stampa vettore*/
void stampa_vettore(int b[], int n){
int i;
for(i=0; i<n;i++){
printf("Il vettore inserito:%d\n", b[i]);
}
}
/*Ordina*/
void ordina (int c[],int n){
int i,j;
for(i=0; i<n-1; i++){
for(j=i+1;j<n;j++){
if(c[i]>c[j]){
scambia(&c[i],&c[j]);
}
}
}
}
/*Scambia*/
int scambia(int *x,int *y){
int temp;
temp=*x;
*x=*y;
*y=temp;
}
/*Ricerca lineare*/
int ricerca_lineare(int d[], int n,int k){
int i;
for(i=0;i<n;i++){
if(d[i]==k){
return i;
}
}
return -1;
}
Grazie per chi saprà darmi diritte giuste.
Ps premetto che essendo l'esame estremamente basilare non teniamo in conto di tempo del compilatore, memoria ecc, l'importante è che il programma funzioni.