Oppure

Loading
17/06/13 12:54
Afa
void input(lista &l){
	for (int i=0; i < l.n; i++){
		cout << "Inserire il valore di x1" << endl;
		cin >> l.segmenti[i].x1; 
		cout << "Inserire il valore di y1" << endl;
		cin >> l.segmenti[i].y1; 
		cout << "Inserire il valore di x2" << endl;
		cin >> l.segmenti[i].x2; 
		cout << "Inserire il valore di y2" << endl; 
		cin >> l.segmenti[i].y2; 
	}
	return;
}


Il programma deve elaborare dei segmenti sapendo le coordinate, il problema e' che vorrei realizzare una funzione che permetta di fare le operazioni qui sopra passando di volta in volta la variabile che serve.

In pratica deve fare le operazioni di stampa e di lettura da consolle, scrivendo un'unica funzione che esegua queste operazioni a seconda delle variabili

Una volta lo feci ma mi sfugge la regola:D Gradirei un vostro aiuto

P.s. scusate se ho fatto qualche errore, o se l'argomento era già presente(ho usato il tasto cerca ma non l'ho trovato) gradirei il link:)
Ultima modifica effettuata da Afa 18/06/13 6:58
aaa
17/06/13 19:44
Poggi Marco
Le soluzioni sono molteplici; utilizzare un puntatore a funzione, richiamare un sottoprogramma...

:ot: Perché hai messo il sottotitolo Borland ? :ot:
aaa
18/06/13 6:51
Afa
Mi servirebbe la soluzione con i sottoprogrammi

:ot:Ho letto che si poteva mettere come sottotitolo il compilatore:ot:

Edit: forse non riesco a esssere chiaro, voglio una cosa del genere
#include<iostream.h>

int ciao(int &x);

void main(){
	int x1, x2;
	ciao(x1);
	ciao(x2);
	return;
}

int ciao(int &x){
	cout << " Inserire il valore" << endl;
	cin >> x;
	cout << x << endl;
	return x;
}

però con le liste non la riesco a fare e non capisco perchè! C'è qualche regola che mi sfugge?
Ultima modifica effettuata da Afa 18/06/13 7:42
aaa
18/06/13 12:26
Poggi Marco
Con le liste, devi definire i metodi per aggiungere, togliere, ricercare elementi nella stessa.
Li hai definiti? Dove trovi difficoltà?
aaa
19/06/13 6:54
Afa
Si è soltanto un problema di passaggio di parametri
Ho buttato giù il codice e non va
#include <iostream.h>

struct dati{
	float x1;
	float x2;
	float y1;
	float y2;
	float lunghezza[MAXDIM];
};

struct lista{
	int n;
	dati segmenti[MAXDIM];
};

void input(lista &l);
lista valore(lista &l.segmenti[].z);

void main(){
	input(l);
	return;
}

void input(lista &l){
	for (int i=0; i < l.n; i++){
		cout << "Inserire il valore di x1" << endl;
		valore(l.segmenti[i].x1);
		cout << "Inserire il valore di y1" << endl;
		valore(l.segmenti[i].y1);
		cout << "Inserire il valore di x2" << endl;
		valore(l.segmenti[i].x2); 
		cout << "Inserire il valore di y2" << endl; 
		valore(l.segmenti[i].y2);
	}
	return;
}

lista valore(lista &l.segmenti[].z){
	cin >> l.segmenti[].z;
	return l.segmenti[].z;
}


N.b. so che è solo codice in più ma devo capire come funziona anche per le liste che mi serve per altri programmi!
aaa
20/06/13 18:06
Afa
Up
aaa
21/06/13 10:27
Afa
Ho risolto alcuni problemi quindi cerco di fare il punto:
void input(lista &l){
        for (int i=0; i < l.n; i++){
                cout << "Inserire il valore di x1" << endl;
                valore(l.segmenti[i].x1);
                cout << "Inserire il valore di y1" << endl;
                valore(l.segmenti[i].y1);
                cout << "Inserire il valore di x2" << endl;
                valore(l.segmenti[i].x2);
                cout << "Inserire il valore di y2" << endl;
                valore(l.segmenti[i].y2);
        }
        return;
}
 
lista valore(lista &l.segmenti[].z){// QUI IL PROBLEMA
        cin >> l.segmenti[].z;
        return l.segmenti[].z;
}


Non funziona dove ho messo "QUI IL PROBLEMA"
aaa
21/06/13 12:36
Poggi Marco
Prova con
 lista valore(lista &l, int indice)
{
  cin >> l.segmenti[ indice].z;         
  return l; 
}

( non ti funziona perchè il campo l.segmenti [ ] .z non è di tipo lista )
Ultima modifica effettuata da Poggi Marco 21/06/13 12:38
aaa