Matlab - Otro array

 
Vista:

Otro array

Publicado por marcelo (3 intervenciones) el 03/11/2007 00:26:11
Hola de nuevo
Mi pregunta es como hago para pedir datos "palabra" y entregralos. Lo que quiero hacer es un prog con el editor que me pida nombres y despues me los entregue como una matriz columna.
Se que eso se hace con matlab haciendo

>>c=char('juan','pedro','diego') (hago enter y me entrega)

juan
pedro
diego

pero como lo hago para que me pida el numero de nombres y a continuacion los nombres y los guarde?
Cuando uno trabaja con numeros primero debe declara un variable como vector nulo es decir:

vector=[ ]; (y luego pedir los datos con un "for");

Pero no se como declara un vector ( en realidad deberia ser una matriz ) nulo para un conjunto de caracteres. Ahhh y otra cosa. Si hago:

>>numero=[1,2,3] (enter)
>>palabra=char('gracias','por','ayudarme') (enter)

>>juntos [ numero ' , palabra ] (enter)

¿por que me entrega la columna numeros como unos puntitos negros?, es decir me da:

 gracias
 por
 ayudarme

como lo hago para que aparesca el numero?
Ok, gracias.
Bye.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Otro array

Publicado por Kike (304 intervenciones) el 03/11/2007 02:04:44
El comando char se usa para trabajar con códigos ASCII. Si yo quiero conocer el código ASCII de la letra "a":
>> single('a')

ans =

97

O también:
>> double('a')

ans =

97

Pero si yo quiero saber a qué símbolo corresponde el código ASCII 100:
>> char(100)

ans =

d

Así que char(1) da el símbolo que corresponde al código ASCII 1, y por eso sale un símbolo raro y no el número uno que tú querías.

****************************************

Es mejor trabajar con arreglos de celdas en vez de matrices cuando se usan letras.

Una matriz vacía se define como un vector vacío:
matriz_vacia = [ ];

¿Por qué? Porque un vector es una matriz de una columna y varias filas, o una fila y varias columnas.

Ahora hagamos el programa:

arreglo={ }; % arreglo de celdas vacío

% Defino cuántos datos serán
total_datos=input('Cuántos datos introducirá? \n');

% Introduzco los datos (nombres), y automáticamente les asigno un número
for k=1:total_datos
texto=sprintf('Digite el %do. nombre:\n', k);
arreglo{k,1}=k; % el número que corresponde al nombre, en orden ascendente
arreglo{k,2}=input(texto,'s'); % agrego la s porque digitaré un texto (string)
end

disp(' '); % Un renglón en blanco para que sea más fácil la lectura
disp('Presento los datos del arreglo');
arreglo

disp(' '); % Un renglón en blanco para que sea más fácil la lectura
disp('Presento los datos del arreglo individualmente como textos');
for k=1:total_datos
fprintf('%d.- %s\n',k,arreglo{k,2});
end

****************************************************

Al ejecutar el programa:

Cuántos datos introducirá?
3
Digite el 1o. nombre:
Juan José Cañas
Digite el 2o. nombre:
Gabriel García Márquez
Digite el 3o. nombre:
Rubén Darío

Presento los datos del arreglo

arreglo =

[1] 'Juan José Cañas'
[2] [1x22 char]
[3] 'Rubén Darío'


Presento los datos del arreglo individualmente como textos
1.- Juan José Cañas
2.- Gabriel García Márquez
3.- Rubén Darío

*********************************************************

El segundo nombre aparece como [1x22 char] porque es muy largo, por eso lo presento mejor como textos en el siguiente for del programa.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar