Problema programma c

di il
4 risposte

Problema programma c

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.

4 Risposte

  • Re: Problema programma c

    Veramente il programma che hai postato fa molto di più di quanto dici: il vettore in input viene anche ordinato...
    Ad ogni modo il problema è che tu stampi n elementi di V2[] mentre in realtà dovresti stamparne 'elementi2' ...
  • Re: Problema programma c

    Si avevo già risolto nel for finale. Si ho pensato di ordinare anche il vettore in modo tale che fosse più semplice trovare l'elemento in un vettore ordinato.
  • Re: Problema programma c

    Si avevo già risolto nel for finale
    Quindi hai risolto?
  • Re: Problema programma c

    Si si ma grazie lo stesso
Devi accedere o registrarti per scrivere nel forum
4 risposte