Funziona sposta e Crea nuovo array

di il
1 risposte

Funziona sposta e Crea nuovo array

Salve a tutti, volevo chiedervi un aiuto sul capire meglio il concetto di "creazione di nuovo array", mi spiego meglio. Spesso negli esami del mio prof c'è una parte in cui ti chiede di verificare che degli elementi di un array soddisfino certe condizioni e di spostarli in un nuovo array. Ora la verifica delle condizioni mi viene piuttosto facile dato che si tratta quasi sempre di usare "strcmp, la parte complicata sta nello spostare in nuovo array. Ora, ho "capito" che per spostare da un array ad un altro posso utilizzare il comando "strcpy", ma ho problemi con la dimensione del secondo array.
Mentre il primo ha una dimensione prestabilita, il secondo dovrebbe avere una dimensione crescente che non gli riesco mai a dare. Qualcuno di voi può aiutarmi postando qualche algoritmo simile? io ad esempio ho provato in questo modo ma il compilatore crasha

MAIN FILE

#include <cstdlib>
#include "aereo.h"
#include <iostream>
using namespace std;

/*
*
*/
int main(int argc, char** argv) {
int n,k1,k2,j,r;
aereo a[100];
aereo b[100];
aereo c[100];
cout<<"inserisci numero prenotazioni: ";
cin>>n;
leggi(a,n);
cout<<"inserisci numero codice massimo: ";
cin>>k1;
cout<<"inserisci numero codice minimo: ";
cin>>k2;
controlla(a,n,k1,k2,j,r);
inserisci(a,b,c,k1,k2,j,r,n);
stampa (b,j);
stampa(c,r);
return 0;
}
HEADER FILE
#ifndef AEREO_H
#define AEREO_H
struct aereo{
char volo[30];
char nome[30];
char cognome[30];
int cod;


};
void leggi(aereo a[], int n);
void controlla(aereo a[], int n, int k1, int k2, int j, int r);
void inserisci(aereo b[], aereo c[], aereo a[], int n, int k1, int k2, int j, int r);
void stampa(aereo a[], int n);
#endif /* AEREO_H */
FUNZIONI FILE
#include <cstdlib>
#include <iostream>
#include "aereo.h"

using namespace std;

/*
*
*/
void leggi(aereo a[], int n){
for(int i=0;i<n;i++){
cout<<"inserisci volo:";
cin>> a.volo;
cout<<"inserisci nome: ";
cin>> a.nome;
cout<<"inserisci cognome:";
cin>> a.cognome;
cout<<"inserisci codice: ";
cin>> a.cod;
}
}

void controlla(aereo a[], int n, int k1, int k2, int j, int r){
for(int i=0;i<n;i++){
if(a.cod<k1){
j++;
}
if(a.cod>k2){
r++;
}
}
}
void inserisci(aereo b[], aereo c[], aereo a[], int n, int k1, int k2, int j, int r){
for(int i=0;i<n;i++){
for(int s=0;s<j;s++){
if(a.cod<k1){
b[s]=a;
}
for(int l=0;l<r;l++){
if(a.cod>k2){
c[l]=a;
}
}
}
}

}



void stampa(aereo a[], int n){
for(int i=0;i<n;i++){
cout<<a[i].volo;}
for(int i=0;i<n;i++){
cout<<a[i].cognome;}
for(int i=0;i<n;i++){
cout<<a[i].cod;
}
}



Grazie ancora per il vostro aiuto

1 Risposte

  • Re: Funziona sposta e Crea nuovo array

    Attenzione a j e r

    Quando li usi nella prima funzione non hanno mai avuto un valore.

    E ricorda che passando j e r in quel modo le modifiche saranno soltanto "locali".
    All'uscita dalla prima funzione i valori di j e r non saranno modificati.

    Aiutati visualizzando il valore di j e r in vari punti del programma per capire quale valore assumono.

    P.S. Non è il compilatore che va in crash, ma il tuo programma.
Devi accedere o registrarti per scrivere nel forum
1 risposte