Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 19/04/2024, à 20:02

temps

[résolu] problème boucle du for

Bonjour,
J'ai écris un code qui incrémente des valeurs dans un tableau.
Quand j'ai écris ma première boucle, ça marchait très bien, quand j'ai ajouté les trois boucles suivantes , les quatre dernière boucle se sont mis à écrire des valeurs incohérente. même la première boucle qui marche très bien quand elle est seule.
Est-ce que quelqu'un peut m'aider, le code est ici

    int tab[801], tab1[4],i,j,repet1;
    
for(j=0; j<4; j++)
{
cout << "Tapez les 4 variations " << j << " : ";
cin >> tab1[j];
}

    
    for(i=0; i<800; i++) tab[i] = 128;
    for(i=1; i<800;i=i+2) tab[i] = 2;
//    for(i=4; i<800;i=i+4) tab[i] = 28;
//    for(i=2; i<800;i=i+4) tab[i] = 228;
    for(i=4; i<400;i=i+4) tab[i] = 128-tab1[0];
//    for(i=2; i<400;i=i+4) tab[i] = 128+tab1[0];

int j1,j2,j3,j4=1;
    for (i=2; i<100;i=i+16) {  tab[i] = 128+(j1*(tab1[0]));  j1++ ; }
    for (i=6; i<100;i=i+16) {  tab[i] = 128+(j2*(tab1[1]));  j2++ ; }
    for (i=10; i<100;i=i+16) { tab[i] = 128+(j3*(tab1[2]));  j3++ ; }
    for (i=14; i<100;i=i+16) { tab[i] = 128+(j4*(tab1[3]));  j4++ ; }
 
    if(ici)    
    {
      
        for (repet1 = 0; repet1 < 800; repet1++) { ici<<tab[repet1]<< " "; }
       
    }

Après plusieurs tests j'ai identifié que c'est la valeur de j1 qui est énorme

Dernière modification par temps (Le 19/04/2024, à 21:13)


Parce que l'USB bootable est le support des systèmes experts,
Parce que l'USB bootable contient sa propre image au démarrage.
L'USB bootable permet de créer un monde à la dimension de son imagination
https://www.letime.net

Hors ligne

#2 Le 19/04/2024, à 21:12

temps

Re : [résolu] problème boucle du for

Je mets résolu, c'était la déclaration des variables

int j1=1, j2=1, j3=1, j4=1;

Parce que l'USB bootable est le support des systèmes experts,
Parce que l'USB bootable contient sa propre image au démarrage.
L'USB bootable permet de créer un monde à la dimension de son imagination
https://www.letime.net

Hors ligne

#3 Le 19/04/2024, à 22:16

Nuliel

Re : [résolu] problème boucle du for

Bonjour,
Juste un petit message parce que ça aurait été difficile de t'aider vu les explications (quelles boucles étaient en cause? Parce qu'il y en a beaucoup) et le code. Quelques conseils en vrac:
- indenter correctement ton code
- nommer les variables avec des noms explicites
- restreindre la portée d'une variable au minimum, par exemple il y a plein d'index que tu aurais pu définir dans les boucles for:

for (int i=2; i<100;i=i+16) {
    ton code
}

- utiliser des #define ou des constantes plutôt que des valeurs fixes partout dans le code
- mets des commentaires pour savoir ce que fait un bloc

L'idée ce n'est pas de critiquer mais de te donner des pistes pour que ton code soit plus propre et que tu aies plus facilement de l'aide en cas de besoin.

Hors ligne

#4 Le 19/04/2024, à 23:35

temps

Re : [résolu] problème boucle du for

Bonjour,
mille mercis d'avoir consacré du temps pour m'aider.
Je vais essayer de suivre les conseils que je comprends, car j'aimerai bien que le code soit repris voir même être incorporé dans une autre application comme audacity.
Je viens de commencer la version 2.01 qui apporte un premier générateur de fichier au format audio.jo

L'erreur n'était pas la boucle mais la dernière déclaration de variable qui m'a fait perdre 1/2 journée, j'étais persuadé que c'était la boucle
Cordialement


Parce que l'USB bootable est le support des systèmes experts,
Parce que l'USB bootable contient sa propre image au démarrage.
L'USB bootable permet de créer un monde à la dimension de son imagination
https://www.letime.net

Hors ligne

#5 Le 20/04/2024, à 01:07

krodelabestiole

Re : [résolu] problème boucle du for

temps a écrit :

j'aimerai bien que le code soit repris

si c'est ce que tu veux, un truc extrêmement important sont les commentaires !
personne n'a envie de se pencher sur un code non commenté pour le plaisir (c'est différent quand on passe derrière quelqu'un pour résoudre un problème personnel spécifique).
la logique générale en début de fichier, puis détailler la raison de chaque classe et fonction, avec leurs paramètres / méthodes et leurs retours.

et d'une manière générale la lisibilité, comme le dit Nuliel.
un bon code dans un bon langage se lit aussi bien que de l'anglais - en nommant bien ses variables, ses fonctions et ses classes.
(après ça dépend évidemment du langage : en bas niveau - proche du langage machine : assembleur, fortran... - c'est évidemment plus compliqué, d'où l'importance des commentaires.)

puis partager le code sur des plateformes adaptées (dépôts git sur le web), c'est là qu'on trouve les développeurs.
je pense que c'est le seul moyen d'espérer de l'énergie collaborative.

et il y a tout à gagner à poser ses idées en clair, même en solitaire !

Hors ligne

#6 Le 20/04/2024, à 07:42

temps

Re : [résolu] problème boucle du for

Merci c'est ce que j'avais compris dans le message précédent.
La première appli est très simple, elle manipule de nombreuses lois, variation de vitesse sur inertie, plusieurs sons, des limites ... Parler des comment n'a que peu d'intérêt car le son est induit par les pourquoi et donc pour le modifier,il faut comprendre les pourquoi, les comment se limitent à l'outil et non pas à la raison d'être de l'outil. J'ai essayé de commenter avec les pourquoi en appui sur les comments
ok pour les boucles, et les explications, je les ai ajouté dans le code.
Mes idées sont claires,c'est seulement que nous construisons nos pensées avec le langage et c'est pas évident de dire même avec le français qui semble le plus approprié.
Par chance, il reste les lois physiques pour montrer, une des principales dimension est celle des variations de pression,avec les  variations cinétiques comment répondre quand j’entends fréquence, à par d'essayer de montrer

De retour,je ne trouve pas d'utilisation à

#define

dans le code, je n'ai pas de constante. Concernant le switch c'est une répétition de boucles,mais comment créer des fonctions quand justement les arguments doivent être recopiés dans chaque fonctions. le code serait bien plus lourd.
Et pour le git, comme annoncé c'est ici :

https://framagit.org/temps09/audio.jo

cordialement

Dernière modification par temps (Le 20/04/2024, à 23:24)


Parce que l'USB bootable est le support des systèmes experts,
Parce que l'USB bootable contient sa propre image au démarrage.
L'USB bootable permet de créer un monde à la dimension de son imagination
https://www.letime.net

Hors ligne