#include #include #include using namespace std; /**pour compiler g++ 'app5.cpp' -std=c++11 -Wall -Wextra -o 'joapp5' ********************/ // version app5a nous changeons la forme de l'inertie que sur le pt haut onde 1 int main() { string const construit("audio.jo"); ofstream ici(construit.c_str()); int tab[830], tab1[7],j1,j2; // tableau plus grand(830 pour 800) a cause ecriture over flow induit par for(int i=0; i<800;i=i+24) qui pousse i au dessus de 800 for(int j=0; j<7; j++) { cout << "Tapez 7 valeurs.(1-pt haut onde 1)(2-delta pt1-pt2)(3-id pt2-pt3)(4-H1)(5-H2)(6-H3)(7-k7) " << j << " : "; cin >> tab1[j]; } //H1 hauteur ralenti onde 1 et H2 hauteur ralenti onde 2, ces variations de hauteurs produisent les sons if (tab1[1] < 30){tab1[1] = 30;} for(int i=0; i<800; i++) {tab[i] = 128;}// je remplis les cases du tableau utile for(int i=1; i<800;i=i+2){ tab[i] = 2;}// tous les plateaux de crete sont mis a 2 // tab[0]=20; j1=1; j2=2; for(int i=0; i<800;i=i+24) { tab[(0+i)] = tab[22]-tab1[1]+j1;if (j1 >60){j2=2;}if (j1 <2){j2=1;};if (j2 ==2){j1--;}; if (j2 ==1){j1++;j1++;j1++;j1++;j1++;j1++;j1++;j1++;j1++;j1++;j1++;j1++;j1++;j1++;j1++;j1++;}; if (tab[(0+i)] < 5){tab[(0+i)] = 5;} ; if (tab[(24+i)] > (tab[(22+i)]-1)){tab[(24+i)] = (tab[(22+i)]-1);}}// point bas onde 1 for(int i=0; i<800;i=i+24) { tab[(2+i)] = tab[(0+i)] +1+j1;if (j1 >60){j2=2;}if (j1 <2){j2=1;};if (j2 ==2){j1--;}; if (j2 ==1){j1++;j1++;j1++;j1++;j1++;j1++;j1++;j1++;j1++;j1++;j1++;j1++;j1++;j1++;j1++;j1++;}; if (tab[(2+i)] < (tab[(0+i)]+1)){tab[(2+i)] = (tab[(0+i)]+1);}} for(int i=0; i<800;i=i+24) { tab[(4+i)] = tab[(2+i)]-1 ;} j1=1; j2=2; for(int i=0; i<800;i=i+24) { tab[(6+i)]= (tab1[0])+128+j1;if (j1 >60){j2=2;}if (j1 <2){j2=1;};if (j2 ==2){j1--;}; if (j2 ==1){j1++;j1++;j1++;j1++;j1++;j1++;j1++;j1++;j1++;j1++;j1++;j1++;j1++;j1++;j1++;j1++;}; if (tab[(6+i)] >250) {tab[(6+i)] = 250 ;} } // 3/4 point haut onde 1 for(int i=0; i<800;i=i+24) { tab[(8+i)] = (tab[(6+i)] -tab1[3])+j1;if (j1 >60){j2=2;}if (j1 <2){j2=1;};if (j2 ==2){j1--;}; if (j2 ==1){j1++;j1++;j1++;j1++;j1++;j1++;j1++;j1++;j1++;j1++;j1++;j1++;j1++;j1++;j1++;j1++;};if (tab[(8+i)] > (tab[(6+i)]-1)){tab[(8+i)] = (tab[(6+i)]-1);} }// point haut onde 1 echo for(int i=0; i<800;i=i+24) { tab[(10+i)] = (tab[(6+i)]); if (tab[(10+i)] < (tab[(8+i)]+1)){tab[(10+i)] = (tab[(8+i)]+1);}}// point haut onde 1 echo j1=1; j2=2; for(int i=0; i<800;i=i+24) { tab[(12+i)]= tab[(10+i)] -tab1[3]+j1;if (j1 >60){j2=2;}if (j1 <2){j2=1;};if (j2 ==2){j1--;}; if (j2 ==1){j1++;}; if (tab[(12+i)] > 250){tab[(12+i)] = (250-tab1[1]);} } //point bas du 3/4 onde 1 j1=1; j2=2; for(int i=0; i<800;i=i+24) { tab[(14+i)]= tab[(6+i)]-tab1[2]+j1;if (j1 >60){j2=2;};if (j1 <2){j2=1;};if (j2 ==2){j1--;}; if (j2 ==1){j1++;}; if (tab[(14+i)] > 250){tab[(14+i)] = (250-tab1[1]);}; if (tab[(14+i)] < (tab[(12+i)] + 1)){tab[(12+i)] = (tab[(14+i)]+1);} } //1/2 point haut onde 2 j1=1; j2=2; for(int i=0; i<800;i=i+24) { tab[(16+i)] = (tab[(14+i)] -tab1[4])-j1;if (j1 >6){j2=1;};if (j1 <2){j2=2;};if (j2 ==2){j1++;}; if (j2 ==1){j1--;}; if (tab[(16+i)] <5){tab[(16+i)] = 5;};if (tab[(16+i)] >tab[(14+i)]-1 ){tab[(16+i)] =tab[(14+i)]-1;} }// point bas onde 2 /***************/ for(int i=0; i<800;i=i+24) { tab[(18+i)] = (tab[(14+i)]);if (tab[(18+i)] 6){j2=1;};if (j1 <2){j2=2;};if (j2 ==2){j1++;}; if (j2 ==1){j1--;};if (tab[(20+i)] >tab[(18+i)]-1 ){tab[(20+i)] =tab[(18+i)]-1;}; if (tab[(20+i)] <5){tab[(20+i)] = 5;} }// point bas onde 2 /***************/ for(int i=0; i<800;i=i+24) { tab[(22+i)] = (tab[(18+i)]);if (tab[(22+i)]