Suite de nombres (MATLAB)
Résolu
yoyo
-
Sacabouffe Messages postés 9427 Date d'inscription Statut Membre Dernière intervention -
Sacabouffe Messages postés 9427 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
voici le problème pour lequel j'aimerais un petit coup de pouce: j'aimerais écrire la suite de nombre suivante:
12112113114115116111111111111 etc... (le premier 2 est un cas particulier, et le nombre de 1 qui terminent dépendent de N et de i)
j'ai donc écrit cette fonction qui marche, testez là:
function [y]=suite_nombres(i,N)
p=5+3*i;
%définit l'emplacement des nombres >=2
nb_point=3*(N+1);
k=1;
l=2;
for pnt=1:nb_point,
if pnt==nb_point
g(pnt)=1;
y(pnt)=g(pnt);
elseif pnt==2
g(pnt)=2;
y(pnt)=g(pnt),;
elseif pnt==5
g(pnt)=2;
y(pnt)=g(pnt),;
%Fin des cas particuliers constants
elseif pnt==8+3*(k-1)
l=l+1;
if k<i+1
k=k+1;
g(pnt)=l;
y(pnt)=g(pnt),;
else
g(pnt)=1;
y(pnt)=g(pnt),;
end;
else
g(pnt)=1;
y(pnt)=g(pnt),;
end;
end;
Le truc c'est qu'à l'affichage comme vous pouvez le constater, il commence avec y=1, puis y=12 etc...moi ce que je veux c'est qu'il m'affiche le résultat final directement. Par ailleurs, je me demande si dans le cadre d'un calcul utilisant cette fonction, il utilise seulement le résultat final, ou s'il utilise les résultats de l'affichage dont je ne veux pas!!!!!!!
Merci pour votre aide
voici le problème pour lequel j'aimerais un petit coup de pouce: j'aimerais écrire la suite de nombre suivante:
12112113114115116111111111111 etc... (le premier 2 est un cas particulier, et le nombre de 1 qui terminent dépendent de N et de i)
j'ai donc écrit cette fonction qui marche, testez là:
function [y]=suite_nombres(i,N)
p=5+3*i;
%définit l'emplacement des nombres >=2
nb_point=3*(N+1);
k=1;
l=2;
for pnt=1:nb_point,
if pnt==nb_point
g(pnt)=1;
y(pnt)=g(pnt);
elseif pnt==2
g(pnt)=2;
y(pnt)=g(pnt),;
elseif pnt==5
g(pnt)=2;
y(pnt)=g(pnt),;
%Fin des cas particuliers constants
elseif pnt==8+3*(k-1)
l=l+1;
if k<i+1
k=k+1;
g(pnt)=l;
y(pnt)=g(pnt),;
else
g(pnt)=1;
y(pnt)=g(pnt),;
end;
else
g(pnt)=1;
y(pnt)=g(pnt),;
end;
end;
Le truc c'est qu'à l'affichage comme vous pouvez le constater, il commence avec y=1, puis y=12 etc...moi ce que je veux c'est qu'il m'affiche le résultat final directement. Par ailleurs, je me demande si dans le cadre d'un calcul utilisant cette fonction, il utilise seulement le résultat final, ou s'il utilise les résultats de l'affichage dont je ne veux pas!!!!!!!
Merci pour votre aide
Configuration: Windows XP Firefox 3.0.4
A voir également:
- Suite de nombres (MATLAB)
- Nombres faciles - Télécharger - Outils professionnels
- Nombre de jours entre deux dates excel - Guide
- Nombre de page - Guide
- Nombre de combinaison possible avec 3 chiffres ✓ - Forum Programmation
- Comment savoir le nombre de personnes connecté sur mon wifi - Guide
1 réponse
Salut
Tel que ton programme est fait là, en sortie t'as le vecteur y de la suite de nombres.
y(1) = premier chiffre
y(2) = deuxième chiffre
...
...
Je sais pas trop ce que tu veux exactement. Tu veux juste avoir l'affichage de la suite ?
Si c'est le cas, ce que tu peux faire c'est ajouter la ligne y = num2str(y); à ton programme. La variable de sortie y est alors une chaîne de caractères avec des espaces entre chaque nombre.
Si tu veux récupérer le nombre décimal donné par ta suite, ajoute plutôt la ligne y=sum(y.*(10.^(size(y,2)-1:-1:0))); à ton programme.
Pour finir, tu peux grandement simplifier ton programme, il peut s'écrire sous cette forme :
Ciao
Tel que ton programme est fait là, en sortie t'as le vecteur y de la suite de nombres.
y(1) = premier chiffre
y(2) = deuxième chiffre
...
...
Je sais pas trop ce que tu veux exactement. Tu veux juste avoir l'affichage de la suite ?
Si c'est le cas, ce que tu peux faire c'est ajouter la ligne y = num2str(y); à ton programme. La variable de sortie y est alors une chaîne de caractères avec des espaces entre chaque nombre.
Si tu veux récupérer le nombre décimal donné par ta suite, ajoute plutôt la ligne y=sum(y.*(10.^(size(y,2)-1:-1:0))); à ton programme.
Pour finir, tu peux grandement simplifier ton programme, il peut s'écrire sous cette forme :
function y=suite_nombres(ii,N) y=ones(1,3*(N+1)); y(2)=2; val=(2:ii+2); ind_val=(5:3:3*(N+1)); m=min(size(val,2),size(ind_val,2)); y(ind_val(1:m))=val(1:m);J'ai pris ii au lieu de i parce qu'il est un peu dangereux d'utiliser i vu que c'est le nombre complexe pour Matlab normalement. À toi d'ajouter la ligne qui te convient suivant ce que tu veux récupérer en sortie puisque vraisemblablement c'est pas le vecteur des nombres.
Ciao