Azzera filtri
Azzera filtri

switch statement help

1 visualizzazione (ultimi 30 giorni)
Nasir Qazi
Nasir Qazi il 4 Mag 2012
disp('1 for CH4');disp('2 for CO2');disp('3 for N2');
nc =input('components');
if nc > 5
disp('Too Many component')
break
end
for i=1:nc
c(i)=input('c:','s');
switch c(i)
case {'c(i)=1'}
Tc(1,1) = 190;
case {'c(i)=2'}
Tc(1,2) = 120;
case {'c(i)=3'}
Tc(1,3) = 890;
case {'c(i)=4'}
Tc(1,4) = 1210;
case {'c(i)=5'}
Tc(1,5) = 1990;
otherwise
disp('enter the comp')
end
end
% The statement is not working kindly help
  1 Commento
Jan
Jan il 4 Mag 2012
Please do not state only, that this "is not working", but describe the occurring problems with any details. It is much easier to solve a problem than to guess, what the problem is.

Accedi per commentare.

Risposte (4)

Thomas
Thomas il 4 Mag 2012
try
clear variables
disp('1 for CH4');disp('2 for CO2');disp('3 for N2');
nc =input('components: ');
if nc > 5
disp('Too Many component')
break
end
switch nc
case 1
Tc(1,1) = 190
case 2
Tc(1,2) = 120
case 3
Tc(1,3) = 890
case 4
Tc(1,4) = 1210
case 5
Tc(1,5) = 1990
otherwise
disp('enter the comp')
end
EDIT This might be what you want:
clear variables
disp('1 for CH4');disp('2 for CO2');disp('3 for N2');
nc =input('components: ');
if nc > 5
disp('Too Many component')
break
end
for ii=1:nc
c{ii}=input('c:','s')
switch c{ii}
case '1'
Tc(1,1) = 190
case '2'
Tc(1,2) = 120
case '3'
Tc(1,3) = 890
case '4'
Tc(1,4) = 1210
case '5'
Tc(1,5) = 1990
otherwise
disp('enter the comp')
end
end
  4 Commenti
Thomas
Thomas il 4 Mag 2012
Check Edit..
Nasir Qazi
Nasir Qazi il 4 Mag 2012
exactly Thomas , The one you edit is closer to what I am expecting

Accedi per commentare.


Walter Roberson
Walter Roberson il 4 Mag 2012
If the user really were entering in the literal string 'c(i)=1' (6 characters) in response to that input() prompt, then those 6 characters would not fit into the c(i) that the input() string is being assigned to. Please keep in mind that a string in MATLAB is an array of characters, not a distinct data type, so multiple array locations need to be allocated to hold a multi-character string.
Expecting the user to know to type in literally
c(i)=4
in response to the "c:" prompt is expecting too much from the user.
  1 Commento
Nasir Qazi
Nasir Qazi il 4 Mag 2012
chk my codes below , is that right?

Accedi per commentare.


Nasir Qazi
Nasir Qazi il 4 Mag 2012
is that correct
clc
clear
disp('1 for CH4');disp('2 for CO2');disp('3 for N2');
nc =input('components');
if nc > 5
disp('Too Many component')
break
end
for i=1:nc
c(i)=input('c:');
switch c(i)
case 1
if c(i)==1;
Tc(i,:) = 190;
Pc(i,:) = 2;
end
case 2
if c(i)==2;
Tc(i,:) = 120;
Pc(i,:) = 4;
end
case 3
if c(i)==3;
Tc(i,:) = 890;
Pc(i,:) = 6;
end
case 4
if c(i)==4;
Tc(i,:) = 1210;
Pc(i,:) = 4;
end
case 5
if c(i)==5;
Tc(i,:) = 1990;
Pc(i,:) = 8;
end
otherwise
disp('enter the comp')
end
end
  7 Commenti
Nasir Qazi
Nasir Qazi il 4 Mag 2012
let me explain , I have multicomponent e.g nc = 7, and I already assign the value of Tc and Pc to all of them , and for example I want to use 4 component from above and only want to use there assign Tc and Pc values and leave the rest , so I need a code for this purpose , Hope you cleared now.
Walter Roberson
Walter Roberson il 4 Mag 2012
Which 4 would you want to assign to in that case? The first 4? Would the same value be assigned to Tc for each of the 4? In your array Tc(i,:) which one is the component number, and what does the other dimension represent?

Accedi per commentare.


Andrei Bobrov
Andrei Bobrov il 4 Mag 2012
in your case
eg:
c = randi([1 5],10,1);
pt = [[190;120;890;1210;1990],[2;4;6;4;8]];
Tc = pt(c,1);
Pc = pt(c,2);

Categorie

Scopri di più su Loops and Conditional Statements in Help Center e File Exchange

Tag

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by