Vai al contenuto

Primario: Sky Slate Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate Marble
Secondario: Sky Slate Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate Marble
Sfondo: Blank Waves Squares Notes Sharp Wood Rockface Leather Honey Vertical Triangles
Corsi di Laurea










ROX @ Unisa - Forum degli studenti di Ingegneria utilizza i cookie. Se prosegui la navigazione accetti il loro uso.    Accetto l'uso dei cookie
-->
Foto

Tracce gennaio 2012 modalità vecchia


  • Effettua l'accesso per rispondere
Questa discussione ha avuto 25 risposta/e

#1
LUIGI89

LUIGI89

    Advanced Member

  • Utente
  • StellaStellaStella
  • 32 Messaggi:
Salve qualcuno aveva la modalità vecchia d'esame?io ho sostenuto l'esame al secondo blocco mi sono vapitate 2 funzioni alquanto strane:caricare una matrice dal file(nomefile).L'altra dovevo leggere gli elementi della matrice e se i valori erano multipli di 3 inserire l'elemento 3 altrimenti dare l'elemento nullo.
Le funzioni erano semplici ma non capisco perchè con il matlab non partivano mi davano sempre errore,come se i dati di input (nomefile)del primo e (a )la matrice del secondo esercizio, non fossero riconoscoiute!
Qualcuno mi può aiutare a capire il problema?



#2
Ross3ll4

Ross3ll4

    Newbie

  • Utente
  • Stella
  • 5 Messaggi:
Dava lo stesso problema anche a me!!! o_O

#3
daddda

daddda

    Member

  • Utente
  • StellaStella
  • 26 Messaggi:
idem!!!!! mi dava sempre erroreee! se avete notato poi il file da caricare era matrici.txt.... mentre nella traccia dava matrice.txt.... anke con la correzione mi dava errore.. peccato xk era abb facile!

#4
LUIGI89

LUIGI89

    Advanced Member

  • Utente
  • StellaStellaStella
  • 32 Messaggi:
Bene!!perlomeno so che il problema non è solo il mio!!ho cercato di evidenziare il problema a secondulfo e lui mi ha detto qual'è il file di inpunt? manca la funzione!bha sinceramente si è capito solo lui!
ragazzi e voi come li avete svolti gli esercizi?

#5
daddda

daddda

    Member

  • Utente
  • StellaStella
  • 26 Messaggi:
ma qualcuno ha la traccia??

#6
southforce

southforce

    Advanced Member

  • Utente
  • StellaStellaStella
  • 57 Messaggi:
ma qualcuno sa qnd escono i risultati???

#7
daddda

daddda

    Member

  • Utente
  • StellaStella
  • 26 Messaggi:
credo venerdi!

#8
ottimismo

ottimismo

    Member

  • Utente
  • StellaStella
  • 11 Messaggi:
Il problema stava nel fatto che matlab quando ti eseguiva la function A=crea_matrice(nomefile) non sà a che file deve fare riferimento per questo ti dava errore.
La cosa da fare era chiudere il file crea_matrice.m e dal file traccia1.m richiamare la funzione con questa stringa A=crea_matrice('matrici.txt').A Questo Punto Bisognava Eseguire Il File traccia1.m
Comunque Ha Detto Il Professore Che L'Importante Era Completare Le 2 Funzioni...Poi Implementare Il File Traccia1.m In Modo Da Richiamare Le Funzioni In Modo Corretto Era Un Di Più.Dopo Se Ho Tempo Posto Il Codice Della Traccia Con Svolgimento.

#9
ottimismo

ottimismo

    Member

  • Utente
  • StellaStella
  • 11 Messaggi:
Inserisco Qui Il Contenuto Del File Traccia1.m ("La Traccia Non Era Scritta Così Ovviamente :D)



% 1. Dato Un File matrici.txt Implementare Una Funzione Tale Da Leggere I
% Valori All Interno DI Questo File E Caricarli In Una Matrice
%
% 2. Implementare Una Funzione Che Crei Una MAtrice C Che Faccia
% Corrispondere Ad Ogni Elemento Di A:
% - "3" Se L' Elemento Di A E' Divisibile Per 3 E Non Per 2
% - "0" In Caso Contrario
%
%
% Richiamare Qui La Funziona A=crea_matrice(nomefile)
%
%
%
%
% Richiamare Qui La Funzione C=converti_mat(A)
%

Qui Invece Il Contenuto Del File crea_matrice.m


function A=crea_matrice(nomefile)
% Implementare La Funzione
end

E Infine Il Contenuto Del File converti_mat.m


function C=converti_mat(A)
% Implementare La Funzione
end


#10
daddda

daddda

    Member

  • Utente
  • StellaStella
  • 26 Messaggi:
potresti postare la soluzione??? graziee

#11
ottimismo

ottimismo

    Member

  • Utente
  • StellaStella
  • 11 Messaggi:
Ecco Il Codice Ora Vi Posto Anche I File



% 1. Dato Un File matrici.txt Implementare Una Funzione Tale Da Leggere I
% Valori All Interno DI Questo File E Caricarli In Una Matrice
%
% 2. Implementare Una Funzione Che Crei Una MAtrice C Che Faccia
% Corrispondere Ad Ogni Elemento Di A:
% - "3" Se L' Elemento Di A E' Divisibile Per 3 E Non Per 2
% - "0" In Caso Contrario
%
%
% Richiamare Qui La Funziona A=crea_matrice(nomefile)
%
A=crea_matrice('matrici.txt');
disp('A: ');
disp(A);
%
%
%
% Richiamare Qui La Funzione C=converti_mat(A)
%
C=converti_mat(A);
disp('C: ');
disp(C);

File crea_matrice.m


function A=crea_matrice(nomefile)

A=zeros(3,3);
dim=size(A,1);
fid=fopen(nomefile,'rt');

for i=1:dim
for j=1:dim
A(i,j)=fscanf(fid,'%f',1);
end
end

fclose(fid);

end



File converti_mat.m

function C=converti_mat(A)
dim=size(A,1);
C=zeros(dim,dim);

for i = 1:dim
for j = 1:dim
if (mod(A(i,j),3)==0) && (mod(A(i,j),2)~=0)

C(i,j)=3;
end
end
end

end


#12
LUIGI89

LUIGI89

    Advanced Member

  • Utente
  • StellaStellaStella
  • 32 Messaggi:
io ho fatto così
f_id=fopen(nome_file,'r');
d=fscanf(f_id,'%d',inf);
a=zeros(d);
for i=1:d
for j=1:d
a(i,j)=fscanf(f_id,'%d',1);
end
end
fclose(f_id);


#13
daddda

daddda

    Member

  • Utente
  • StellaStella
  • 26 Messaggi:
più o meno ho fatto anke io così ho mankato solo alla 2 funzione l'if (mod(A(i,j),2)~=0) ho fatto solo if (mod(A(i,j),3)==0) ho letto male la traccia!!

#14
ottimismo

ottimismo

    Member

  • Utente
  • StellaStella
  • 11 Messaggi:
Guarda Se Hai Usato Quella Stringa

d=fscanf(f_id,'%d',inf)

E' Come Se Avessi Creato Un Vettore Con 9 Elementi tipo d=[5,6,7,23,12,67,0,3,4]
E Quindi Così Facendo Hai Fatto Un Ciclo For Con i Che Parte da 1 e Arriva Ad Un Vettore....Ecco Il Problema Percui Dava Errore
E Poi Imponendo A=zeros(d) Hai Imposto Come Grandezza Di A Un Vettore Cosa Ovviamente Non Esatta.
P.S. Ultima Nota Quando Fai Un Fscanf E Arrivi A Leggere La Fine Del File con Il Comando "inf" Non Ha Senso Far Ripartire Un Altro Fscanf Sullo Stesso f_id Perchè E' Come Se La Lettura Del File Iniziasse Dalla Fine Del File, Quindi Viene Da Se Che Stai Andando A Leggere Questo " " Restituendoti Una Matrice Vuota O Comunque Un Errore.
Spero Di Essere Stato Abbastanza Chiaro

#15
LUIGI89

LUIGI89

    Advanced Member

  • Utente
  • StellaStellaStella
  • 32 Messaggi:
Mentre la seconda l'ho svolta così
[r,c]=size(A)
for i=1:r
for j=1:c
if(mod(a(i,j),3)==0
a(i,j)=3
else
a(i,j)=0
end
end
end


#16
daddda

daddda

    Member

  • Utente
  • StellaStella
  • 26 Messaggi:
a me dava errore xk secondo me ho inizializzato male la matrice.. xk ho fatto prp cm hai scritto tu la prima funz "ottimismo" solo ke ho inizializzato la matrice così A=[] mi diceva ke n e m (le dimensioni della matrice nn esistevano). Questo è stato il mio errore credo!
la seconda funzione cambia solo alla fine xkè ho fatto dopo i for e l'if A(i,j)=3 else a(i,j)=0 e poi ho sostituito c(i,j)=a(i,j)..

#17
peppepeppo

peppepeppo

    Moderatore di sezione

  • Moderatore
  • 2474 Messaggi:
Io le avrei svolte così:
funzione crea_matrice
function A=crea_matrice(nomefile)
fid=fopen(nomefile,'rt');
for i=1:3
for j=1:3
A(i,j)=fscanf(fid,'%f',1);
end
end
fclose(fid);
end
@ ottimismo: secondo me è inutile creare la matrice di zeri 3x3 e poi calcolarne del dimensioni se le dimensioni in effetti ce le hai già (3x3 appunto), dunque dim lo sapevi dall' inizio che era 3.

Funzione converti_mat
function C=converti_mat(A)
[r,c]=size(A);
for i=1:r
for j=1:c
if mod((A(i,j)),3)==0 && mod((A(i,j)),2)~=0
C(i,j)=3;
else
C(i,j)=0;
end
end
end
end
@ ottimismo:anche qui, è inutile inizializzare a 0 la matrice C di dimensioni dim.
Cmq la tua è fatta bene, ci hai messo qualche riga di codice superflua secondo me, ma può essere pure che mi sbaglio okok

#18
LUIGI89

LUIGI89

    Advanced Member

  • Utente
  • StellaStellaStella
  • 32 Messaggi:
Ragazzi secondo voi ho qualche chance di passare all'orale?magari con riserva?

#19
ottimismo

ottimismo

    Member

  • Utente
  • StellaStella
  • 11 Messaggi:
Non Vorrei Sbagliare Ma Inizializzare Una Variabile E' Fondamentale In Un Programma, Almeno Questo E' Quello Che Mi Sembra Di Ricordare Dal Corso Seguito Un Pò Di Tempo Fà....Serve A Fare Una Sorta Di Pulizia Nella Memoria Ram Per Eliminare Tracce Di Una Possibile Variabile Vecchia Che Potrebbe Causare Conflitto.
Sicuramente Qualche Riga Poteva Essere Evitata...Ma A Questo Punto Anche Nel Tuo Codice :

[r,c]=size(A);

Potevi Evitare Anche Di Introdurre Una Variabile o r o c Essendo Entrambe Uguali A 3 Potevi Anche Porre Direttamente:

r=3;


#20
LUIGI89

LUIGI89

    Advanced Member

  • Utente
  • StellaStellaStella
  • 32 Messaggi:
le mie funzioni sono queste
f_id=fopen(nome_file,'r');
d=fscanf(f_id,'%d',inf);
a=zeros(d);
for i=1:d
for j=1:d
a(i,j)=fscanf(f_id,'%d',1);
end
end


[r,c]=size(A)
for i=1:r
for j=1:c
if(mod(a(i,j),3)==0
a(i,j)=3
else
a(i,j)=0
end
end
end
fclose(f_id);




Leggono questa discussione 0 utenti

0 utenti, 0 ospiti, 0 utenti anonimi