Forum by laureateci.it
[ Home | REGOLE FORUM | Tutti i blog | Profilo | Registrati | CHAT | Discussioni Attive | Discussioni Recenti | Segnalibro | Msg privati | Sondaggi Attivi | Utenti | Download Informatica | Download ICD | Download TPS | Download Magistrale | Download Specialistica | Giochi | Cerca nel web | cerca | faq | RSS ]
Nome Utente:
Password:
Salva Password
Password Dimenticata?

 Tutti i Forum
 Varie ed eventuali
 Prove libere di post
 AIUTO C
 Forum Bloccato
 Versione Stampabile Bookmark this Topic Aggiungi Segnalibro
I seguenti utenti stanno leggendo questo Forum Qui c'è:
Autore Discussione Precedente Discussione Discussione Successiva  

tipo85
Utente giovane



Inserito il - 01/02/2008 : 09:11:53  Mostra Profilo  Visita l'Homepage di tipo85 Invia a tipo85 un Messaggio Privato
salve ragazzi,
sono uno studente di fisica che deve sostenere un esame di programmazione con un vostro professore. Come ben sapete noi di fisica non sappiamo una cicca di programmazione e volevo chiedere a voi che ne sapete sicuramente più di me.
La traccia dice:

Costruire un programma in C in grado di risolvere un sistema di equazioni di primo grado in due variabili con coefficienti nell’insieme dei numeri razionali. Usare il metodo di Cramer. In particolare si chiede di:
1. Definire “tipoRazionale” come struttura i cui campi sono “numeratore” e “denominatore”, entrambi dichiarati di tipo “intero”.
2. Dichiarare una matrice equazioneLineare (2×3) di tipo “tipoRazionale” che rappresenta un sistema di due equazioni lineari in due variabili.
Esempio:
Assegnata la coppia di equazioni lineari nelle variabili x e y
ax + by = c
dx + ey = f
con a, b,c, d, e, f di tipo “TipoRazionale”.
3. Definire e implementare una procedura per l’inizializzazione della matrice equazioneLineare.
4. Definire e implementare una procedura per la stampa della matrice equazioneLineare.
5. Definire e implementare la procedura somma (tre argomenti) che ha in input “v1” e “v2” di tipo “tipoRazionale” e costruisce “v” di tipo “tipoRazionale” con
v.numeratore=v2.denominatore×v1.numeratore + v1.denominatore×v2.numeratore
v.denominatore=v1.denominatore×v2. denominatore
6. Definire e implementare la procedura differenza che ha in input “v1” e “v2” di tipo “tipoRazionale” e costruisce “v” di tipo “tipoRazionale” con
v.numeratore=v2.denominatore×v1.numeratore - v1.denominatore×v2.numeratore
v.denominatore=v1.denominatore×v2. denominatore
7. Definire e implementare la funzione prodotto che ha in input “v1” e “v2” di tipo “tipoRazionale” e restituisce “v” di tipo “tipoRazionale” con
v.numeratore=v1. numeratore × v2.numeratore
v.denominatore=v1.denomintore× v2.denominatore
8. Definire e implementare la procedura divisione che ha in input “v1” e “v2” di tipo “tipoRazionale” e costruisce “v” di tipo “tipoRazionale” con
v.numeratore=v1. numeratore × v2.denominatore
v.denominatore=v1.denominatore × v2. numeratore
9. Definire e implementare la procedura determinanteQuadrato che ha in input una matrice equazioneLineare (2×3) di tipo “tipoRazionale”, gli indici i e j di tipo intero e costruisce determinante di “tipoRazionale”.
Suggerimento: Utilizzare le procedure prodotto e differenza definite ai punti7-6.
10. Definire e implementare la procedura cramer che ha in input una matrice equazioneLineare (2×3) di tipo “tipoRazionale” costruisce un vettore soluzione di dimensione 2 di tipo “tipoRazionale” che descrive le soluzioni x e y del sistema di equazioni lineari.
Suggerimento usare la procedura determinanteQuadrato definita al punto 9 e divisione definita al punto 8
11. Definire e implementare la procedura stampaSoluzione che stampa il vettore soluzione calcolato al passo 10.
12. Costruire un main di test.

Non vi chiedo di risolvermelo tutto ma almeno fino al punto 5 o 6 almeno che riesco a realizzare le stutture poi per le operazioni ci sbatto io la testa...grazie mille

feeb
Cantù Che Conta Col Cayenne

neophyte

Prov.: Zara


Inserito il - 01/02/2008 : 13:34:08  Mostra Profilo  Visita l'Homepage di feeb  Clicca per vedere l'indirizzo MSN di feeb Invia a feeb un Messaggio Privato
Citazione:
Messaggio inserito da tipo85

Non vi chiedo di risolvermelo tutto ma almeno fino al punto 5 o 6 almeno che riesco a realizzare le stutture poi per le operazioni ci sbatto io la testa...grazie mille






#include <stdio.h>
#include <stdlib.h>

typedef struct t_tipoRazionale {
	int numeratore;
	int denominatore;
} tipoRazionale;

void inizializza(tipoRazionale equazioneLineare[2][3], tipoRazionale a, 
		tipoRazionale b, tipoRazionale c, tipoRazionale d,
		tipoRazionale e, tipoRazionale f) {
	
	equazioneLineare[0][0] = a;
	equazioneLineare[0][1] = b;
	equazioneLineare[0][2] = c;
	equazioneLineare[1][0] = d;
	equazioneLineare[1][1] = e;
	equazioneLineare[1][2] = f;
}

void stampa(tipoRazionale equazioneLineare[2][3]) {
	printf("%d/%d x + %d/%d y = %d/%d\n", equazioneLineare[0][0].numeratore,
			equazioneLineare[0][0].denominatore, equazioneLineare[0][1].numeratore,
			equazioneLineare[0][1].denominatore, equazioneLineare[0][2].numeratore,
			equazioneLineare[0][2].denominatore);
	printf("%d/%d x + %d/%d y = %d/%d\n", equazioneLineare[1][0].numeratore,
			equazioneLineare[1][0].denominatore, equazioneLineare[1][1].numeratore,
			equazioneLineare[1][1].denominatore, equazioneLineare[1][2].numeratore,
			equazioneLineare[1][2].denominatore);
}

tipoRazionale somma(tipoRazionale v1, tipoRazionale v2) {
	tipoRazionale v;
	v.numeratore = v2.denominatore * v1.numeratore + v1.denominatore * v2.numeratore;
	v.denominatore = v1.denominatore * v2. denominatore;
	return v;
}

tipoRazionale differenza(tipoRazionale v1, tipoRazionale v2) {
	tipoRazionale v;
	v.numeratore = v2.denominatore * v1.numeratore - v1.denominatore * v2.numeratore;
	v.denominatore = v1.denominatore * v2. denominatore;
	return v;
}

int main(void) {
	tipoRazionale equazioneLineare[2][3];
	
	tipoRazionale a;
	a.numeratore = 1;
	a.denominatore = 2;
	
	inizializza(equazioneLineare, a, a, a, a, a, a);
	stampa(equazioneLineare);
	
	return EXIT_SUCCESS;
}

http://www.avaaz.org/it/ - http://www.flickr.com/photos/dimethyltryptamine/
Torna all'inizio della Pagina

Chilavert
admin

vacca


Regione: Puglia
Prov.: BA
Città: Bari


Inserito il - 01/02/2008 : 14:08:16  Mostra Profilo  Visita l'Homepage di Chilavert Invia a Chilavert un Messaggio Privato
Proporrei di aggiungere una funzione MCD che restituisce il massimo comune divisore, per ridurre le frazioni.

E' un bene per il Prof. Xxxxxxx che sappia con chi ha a che fare.
Pensa a studiare e non agli esempi, o ad altre strade per così dire,
che questa volta mi sa che non attacca. [cit.]

Tutti professori dall'esterno, e poi parlano persone che per prendere un voto decente
ripetono l'esame 30 volte e poi fanno i sapientoni con chi segue la prima volta vedi chilavert [cit.]
Torna all'inizio della Pagina

feeb
Cantù Che Conta Col Cayenne

neophyte

Prov.: Zara


Inserito il - 01/02/2008 : 14:10:02  Mostra Profilo  Visita l'Homepage di feeb  Clicca per vedere l'indirizzo MSN di feeb Invia a feeb un Messaggio Privato
Citazione:
Messaggio inserito da Chilavert

Proporrei di aggiungere una funzione MCD che restituisce il massimo comune divisore, per ridurre le frazioni.



all'inizio lo avevo anche fatto, ma poi ho visto che non era contemplata dalla traccia

http://www.avaaz.org/it/ - http://www.flickr.com/photos/dimethyltryptamine/
Torna all'inizio della Pagina

Chilavert
admin

vacca


Regione: Puglia
Prov.: BA
Città: Bari


Inserito il - 01/02/2008 : 14:15:57  Mostra Profilo  Visita l'Homepage di Chilavert Invia a Chilavert un Messaggio Privato
Dovrebbe essere così;

int mcd(int num1, int num2){
   int v1, v2;
   if (num1 > num2){
      v1 = num1;
      v2 = num2;
      } else {
      v1 = num2;
      v2 = num1;
      }
   int resto = v1 % v2; //modulo
   while (resto != 0) {
      v1 = v2;
      v2 = resto;
      resto = v1 % v2;
   }
   return v2;
}


E quindi, prima di ritornare v nelle varie funzioni, richiami mcd(v.numeratore, v.denominatore) e li dividi per ciò che ti viene fuori.

E' un bene per il Prof. Xxxxxxx che sappia con chi ha a che fare.
Pensa a studiare e non agli esempi, o ad altre strade per così dire,
che questa volta mi sa che non attacca. [cit.]

Tutti professori dall'esterno, e poi parlano persone che per prendere un voto decente
ripetono l'esame 30 volte e poi fanno i sapientoni con chi segue la prima volta vedi chilavert [cit.]
Torna all'inizio della Pagina

tipo85
Utente giovane



Inserito il - 01/02/2008 : 18:24:55  Mostra Profilo  Visita l'Homepage di tipo85 Invia a tipo85 un Messaggio Privato
salve ragazzi,
vi ringrazio per l'aiuto. Sto prendendo spunto da quello che mi avete proposto voi e lo sto adattando per renderlo più dinamico possibile
Questo è quello che ho prodotto ma quando lo avvio nn mi dà errori ma nel Borland sembra quasi che non entra nel main perchè l'istruzione printf("vediamo se esce") nn me la fa.
Come mai??? aiutooooooo....grazie ancora

#include <stdio.h>
#include <stdlib.h>
struct tipoRaz{
      int numeratore;
      int denominatore;
      };
typedef struct tipoRaz TipoRazionale;

void inizializza(TipoRazionale [2][3], TipoRazionale , TipoRazionale ,
                 TipoRazionale , TipoRazionale , TipoRazionale ,
                 TipoRazionale );
void assegnaeqLin(TipoRazionale [2][3]);

main()
{
  TipoRazionale eqLin[2][3];
  TipoRazionale a, b, c, d, e, f;
  printf("vediamo se esce");
  inizializza(eqLin, a, b, c, d, e, f);
  assegnaeqLin(eqLin);

  printf("%d", eqLin[0][0].numeratore);
  system("PAUSE");
  return 0;

}

void inizializza(TipoRazionale eqLin[2][3], TipoRazionale a, TipoRazionale b,
                 TipoRazionale c, TipoRazionale d, TipoRazionale e,
                 TipoRazionale f){

                 eqLin[0][0]= a;
                 eqLin[0][1]= b;
                 eqLin[0][2]= c;
                 eqLin[1][0]= d;
                 eqLin[1][1]= e;
                 eqLin[1][2]= f;
                 }

void assegnaeqLin(TipoRazionale eqLin[2][3])
{
         int i,j;
         for(i=0;i<=1;i++){
                for(j=0;j<=2;j++){
                        printf("Inserire il numeratore\n");
                            scanf("%d", &eqLin[i][j].numeratore);
                        printf("Inserire il denominatore\n");
                            scanf("%d", &eqLin[i][j].denominatore);
                printf("\n");
                }
         }
}
Torna all'inizio della Pagina

Galgantur
Utente medio

Jet


Regione: Puglia
Prov.: Bari
Città: Bari


Inserito il - 01/02/2008 : 18:44:03  Mostra Profilo  Visita l'Homepage di Galgantur Invia a Galgantur un Messaggio Privato
Citazione:
Messaggio inserito da tipo85

salve ragazzi,
vi ringrazio per l'aiuto. Sto prendendo spunto da quello che mi avete proposto voi e lo sto adattando per renderlo più dinamico possibile
Questo è quello che ho prodotto ma quando lo avvio nn mi dà errori ma nel Borland sembra quasi che non entra nel main perchè l'istruzione printf("vediamo se esce") nn me la fa.
Come mai??? aiutooooooo....grazie ancora




forse è stupido, ma invece di mettere "main()" metti "int main(int argc, char *argv[])" ricordo che a me il dev mi dava sempre sto errore...
Torna all'inizio della Pagina

tipo85
Utente giovane



Inserito il - 01/02/2008 : 18:50:32  Mostra Profilo  Visita l'Homepage di tipo85 Invia a tipo85 un Messaggio Privato
Ho provato!! Ma niente... mi dà sempre gli stessi problemi! grazie comunque...AIUTATEMIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
Torna all'inizio della Pagina

airbag
utente salvato da un

airbag

Città: manchester


Inserito il - 01/02/2008 : 19:55:07  Mostra Profilo  Visita l'Homepage di airbag  Invia a airbag un messaggio AOL Invia a airbag un Messaggio Privato
a me compila e mi da anche un risultato, non ho capito se sia giusto
http://img529.imageshack.us/img529/372/immagine1tn4.png

<>Can't you see them?
Can't you see them?
roots can't hold them
Bugs console them<>
<big><big><big><i><font color="#000033">since
yourheadisshacking
inthat
yourarmsareshacking
inthat
yourfeetareshacking
cause
theEarthisshackin'</font></i></big></big></big>
Torna all'inizio della Pagina

Chilavert
admin

vacca


Regione: Puglia
Prov.: BA
Città: Bari


Inserito il - 01/02/2008 : 20:18:14  Mostra Profilo  Visita l'Homepage di Chilavert Invia a Chilavert un Messaggio Privato
Citazione:
Messaggio inserito da airbag

a me compila e mi da anche un risultato, non ho capito se sia giusto
http://img529.imageshack.us/img529/372/immagine1tn4.png




http://www.laureateci.it/forum/topic.asp?TOPIC_ID=5599

E' un bene per il Prof. Xxxxxxx che sappia con chi ha a che fare.
Pensa a studiare e non agli esempi, o ad altre strade per così dire,
che questa volta mi sa che non attacca. [cit.]

Tutti professori dall'esterno, e poi parlano persone che per prendere un voto decente
ripetono l'esame 30 volte e poi fanno i sapientoni con chi segue la prima volta vedi chilavert [cit.]
Torna all'inizio della Pagina

airbag
utente salvato da un

airbag

Città: manchester


Inserito il - 01/02/2008 : 20:43:14  Mostra Profilo  Visita l'Homepage di airbag  Invia a airbag un messaggio AOL Invia a airbag un Messaggio Privato
Citazione:
Messaggio inserito da Chilavert

Citazione:
Messaggio inserito da airbag

a me compila e mi da anche un risultato, non ho capito se sia giusto
http://img529.imageshack.us/img529/372/immagine1tn4.png




http://www.laureateci.it/forum/topic.asp?TOPIC_ID=5599



ehm, ovviamente il non so se sia giusto è riferito all'intero che stampa

<>Can't you see them?
Can't you see them?
roots can't hold them
Bugs console them<>
<big><big><big><i><font color="#000033">since
yourheadisshacking
inthat
yourarmsareshacking
inthat
yourfeetareshacking
cause
theEarthisshackin'</font></i></big></big></big>
Torna all'inizio della Pagina

Chilavert
admin

vacca


Regione: Puglia
Prov.: BA
Città: Bari


Inserito il - 01/02/2008 : 20:56:34  Mostra Profilo  Visita l'Homepage di Chilavert Invia a Chilavert un Messaggio Privato
Citazione:
Messaggio inserito da airbag

Citazione:
Messaggio inserito da Chilavert

Citazione:
Messaggio inserito da airbag

a me compila e mi da anche un risultato, non ho capito se sia giusto
http://img529.imageshack.us/img529/372/immagine1tn4.png




http://www.laureateci.it/forum/topic.asp?TOPIC_ID=5599



ehm, ovviamente il non so se sia giusto è riferito all'intero che stampa



Lo so, sacca d'aria. Ma il system("pause") mi rievoca questa storia...

E' un bene per il Prof. Xxxxxxx che sappia con chi ha a che fare.
Pensa a studiare e non agli esempi, o ad altre strade per così dire,
che questa volta mi sa che non attacca. [cit.]

Tutti professori dall'esterno, e poi parlano persone che per prendere un voto decente
ripetono l'esame 30 volte e poi fanno i sapientoni con chi segue la prima volta vedi chilavert [cit.]
Torna all'inizio della Pagina

feeb
Cantù Che Conta Col Cayenne

neophyte

Prov.: Zara


Inserito il - 02/02/2008 : 00:03:09  Mostra Profilo  Visita l'Homepage di feeb  Clicca per vedere l'indirizzo MSN di feeb Invia a feeb un Messaggio Privato
Citazione:
Messaggio inserito da tipo85

salve ragazzi,
vi ringrazio per l'aiuto. Sto prendendo spunto da quello che mi avete proposto voi e lo sto adattando per renderlo più dinamico possibile
Questo è quello che ho prodotto ma quando lo avvio nn mi dà errori ma nel Borland sembra quasi che non entra nel main perchè l'istruzione printf("vediamo se esce") nn me la fa.
Come mai??? aiutooooooo....grazie ancora

#include <stdio.h>
#include <stdlib.h>
struct tipoRaz{
      int numeratore;
      int denominatore;
      };
typedef struct tipoRaz TipoRazionale;

void inizializza(TipoRazionale [2][3], TipoRazionale , TipoRazionale ,
                 TipoRazionale , TipoRazionale , TipoRazionale ,
                 TipoRazionale );
void assegnaeqLin(TipoRazionale [2][3]);

main()
{
  TipoRazionale eqLin[2][3];
  TipoRazionale a, b, c, d, e, f;
  printf("vediamo se esce");
  inizializza(eqLin, a, b, c, d, e, f);
  assegnaeqLin(eqLin);

  printf("%d", eqLin[0][0].numeratore);
  system("PAUSE");
  return 0;

}

void inizializza(TipoRazionale eqLin[2][3], TipoRazionale a, TipoRazionale b,
                 TipoRazionale c, TipoRazionale d, TipoRazionale e,
                 TipoRazionale f){

                 eqLin[0][0]= a;
                 eqLin[0][1]= b;
                 eqLin[0][2]= c;
                 eqLin[1][0]= d;
                 eqLin[1][1]= e;
                 eqLin[1][2]= f;
                 }

void assegnaeqLin(TipoRazionale eqLin[2][3])
{
         int i,j;
         for(i=0;i<=1;i++){
                for(j=0;j<=2;j++){
                        printf("Inserire il numeratore\n");
                            scanf("%d", &eqLin[i][j].numeratore);
                        printf("Inserire il denominatore\n");
                            scanf("%d", &eqLin[i][j].denominatore);
                printf("\n");
                }
         }
}





cambia printf("vediamo se esce"); con printf("vediamo se esce\n"); o, in modo equivalente, puts("vediamo se esce"); altrimenti su alcuni SO, se non metti il newline alla fine o non flushi lo stream su cui stai scrivendo (stdout, stderr, ..) non ti mostra la stringa

idem con printf("%d", eqLin[0][0].numeratore);

per il resto, sul mio fronte non sembra ci siano problemi:

http://www.neuralnoise.com/ScreenshotTipo85.jpg


http://www.avaaz.org/it/ - http://www.flickr.com/photos/dimethyltryptamine/

Modificato da - feeb in data 02/02/2008 00:06:01
Torna all'inizio della Pagina
  Discussione Precedente Discussione Discussione Successiva  
 Forum Bloccato
 Versione Stampabile Bookmark this Topic Aggiungi Segnalibro
Vai a:
Forum by laureateci.it © 2002 - 2012 Laureateci Communications Torna all'inizio della Pagina
Il DB ha risposto in 0,3 secondi.

TargatoNA.it | SuperDeejay.Net | Antidoto.org | Brutto.it | Equiweb.it | Snitz Forum 2000