CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[C++] Ti-Basic -> C++

tauruxbis
tauruxbis
Niveau 10
01 mai 2006 à 20:02:05

Voilà, je voudrais transférer mon programme qui est sur ma TI sur mon ordinateur car j´ai deux contraintes :
-la vitesse (ram)
-la mémoire (8000 octets de libre, c´est dur de mener a bien ce programme)

je vous écris en c++ le plus possible mon programme, ce que je ne sais pas faire , je vais tenter de l´expliquer.

Tout d´abord, c´est un programme qui stock dans une matrice (je pense que ça doit être un tableau, tout simplement (matrice : tableau plusieurs dimention, que j´utilise car tableau maximum en ti basic ne contient que 99 valeurs)).

int main()
{
int nDividende = 1;
int s = 1; //x d´un tableau
int h = 2; //idem
float Quotient = 0;
int nDiviseur = 0;

while 1==1
{
//alors ici, je voudrais stocker dans le diviseur,
les valeurs du tableau (en fait, je voudrais que le tableau soit déjà remplit de quelques valeurs pour que ça marche) en fonction de ce qui va suivre

Quotient = nDividende / nDiviseur

//ici je voudrais mettre : if "la valeur entiere d
u quotient" == "la valeur actuelle du quotient" (ça donne "If int(C)=c" en TI-basic)
{
nDividende++; //si c´est entier ce n´est pas un no
mbre premier
h = 2 //il ne faut pas que la valeur du diviseur (
qui dépend du tableau) soie la premiere valeur de ce tableau (c´est a dire le 1er nombre premier : 1 , car sinon on aurait forcemment une valeur entiere.

else
h++; //on regardera a la prochaine boucle si la di
vision par le prochain nombre premier sera entiere et ainsi de suite...
}
if nDiviseur >= (Dividente /2)
{
//ici je veux qu´on stock le nombre premier (qui l
´est puisqu´on ne peux plus avoir de valeur entiere si le diviseur est plus grand que la moitié du dividende) dans un tableau (je voudrais aussi qu´il soit accessible par la suite ce tableau (ce qui est le cas des matrices sur ma calculatrice)). en tibasic, ça donne "A->[D](R,S)" (D : nom de la matrice, R : Absisse de la matrice, S : Ordonnée de la matrice, A : nombre premier)

s++; //pour ne pas stocker les valeur toujours dan
s la même place du tableau

cout << nDividende << endl; //on affiche le nombre
premier
nDividende++;
h = 2; // comme je l´ai dit, on remet le diviseur
a la 2e valeur du tableau des nombres premier pour ne pas tomber sur 1
}
}
}

voilà.
je vous donne le programme en ti basic (assez compréhensible.

:Clrhome
:1->A:1->S:4->R:1->H:2->I
:While 1=1
:([D](H,I))->B
:A/B->C
:If int(C)=C
:Then
:A+1->A:1->H:2->I
:Else
:I+1->I
:If I=100 //matrice pas plus grande que 99 sur TI
:Then
:1->I:H+1->H
:End
:End
:If B >= (A/2)
:Then
:A->[D](R,S)
:S+1->S
:If S=100
:Then
:1->S:R+1->R
:If R=6:Stop (plus de memoire dans la TI :p)
:End // ce end n´affecte pas le If d´avant)
:Disp A (affiche A)
:A+1->A:1->H:2->I
:End
:End

Voilà, essayez de m´aider :-d

tauruxbis
tauruxbis
Niveau 10
02 mai 2006 à 11:33:54

Le programme en "Français" :

-mettre l´entier nDividende à 1
-mettre l´entier s à 1
-mettre l´entier h à 2
-mettre le décimal Quotient à 0
-mettre l´entier nDiviseur à 0
//- je voudrais aussi initialyser le tableau (gran
de portée) avec quelques valeurs)

-Boucle infinie
--Prendre la valeur "h" du tableau et la stocker dans le "nDiviseur"
--Mettre dans le "Quotient" le quotient de "nDividende" et de "nDiviseur"

--Si le "Quotient" est entier :
---Incrémenter "nDividende" de 1
---mettre 2 dans h
--Sinon
---Incrémenter "h" de 1

--Si le "nDiviseur" est supérieur ou égal à la moitié du "nDividende"
---Stocker "nDividende" dans la place "s" du tableau
---Incrémenter "s" de 1
---Afficher "nDividende"
---Incrémenter "nDividende" de 1
---mettre 2 à "h"
--
-(Fin de la boucle infinie et retour à son début.

Ce qui serait bien c´est de pouvoir ensuite accéder aux valeurs de ce tableau (d´en avoir si possible une liste, je pense que cette façon convienne :

for (int i=1 , i different de 0 , i++)
{
cout << endl << tableau[i];
}

voila)

bon ben essayez de m´appuyer (surtout sur l´histoire de vérifier si c´est un entier, je sais pas trop si ça marche comme sur la TI)

tauruxbis
tauruxbis
Niveau 10
02 mai 2006 à 11:37:54

en fait pour la liste, cette façon plutot :

int n = 1;
for (int i=1 , i different de 0 , i++)
{
cout << endl << tableau[i];
n++;
if n=10
{
system ("PAUSE");
n = 1;
}
}

tauruxbis
tauruxbis
Niveau 10
02 mai 2006 à 22:06:59

Eh bien personne ne sait :-p ?

dnob700
dnob700
Niveau 10
03 mai 2006 à 00:06:54

ce qui se serait bien (pour éviter d´avoir à réfléchir) c´est de décrire le but de ton programme et non pas son fonctionnement.

Car si on ne sait pas ce qu´il est cencé faire, on ne peut pas te dire comment le faire.

Gogeta25
Gogeta25
Niveau 34
03 mai 2006 à 00:58:27

Moi qui voulait me mettre au C++, vous venez de me decourager avec tous vos signez bizzares.Allez, je retourne sur rpg maker, c´est plus facile, :lol:

godrik
godrik
Niveau 30
03 mai 2006 à 09:38:56

C´est un algorithme de test de primalité de N ?
Il raisonne de la facon suivante: N est premier si et seulement si tous les nombres premiers inférieur a racine de N ne divisent pas N.
C´est ca j´ai bon ?

tauruxbis
tauruxbis
Niveau 10
03 mai 2006 à 13:46:36

godrik :d) Eh bien, dans mon programme, c´est si et seulement si tous les nombres premiers inférieurs à la moitié de N , mais si tous le nombres premier inférieurs a la racine de N ne sont Forcemment pas divisible, c´est encore plus rapide :-d

gogeta25 :d) Non, non, tu as tord, c´est pourtant très simple, c´est juste que j´ai du mal a expliquer mes pensées toutes bêtes, tu peux retourner à rpg maker, mais t´intéresser aussi au C++ (comme moi :) )

Bon, en gros, ça fait longtemps que je n´ai plus ouvert mon livre et voila ce dont j´ai besoin:

les instructions :

-pour initialiser un tableau le plus grand possible.
-pour mettre quelques valeurs dans le tableau avant la boucle.
-pour verifier si un nombre est entier.
-pour stocker une valeur x dans une place n du tableau (je crois que c´est : nTableau[n] = x;)
-pour accéder simplement aux valeurs de ce tableau, mais une fois que j´aurais le reste je pense pouvoir me débrouiller.

Voilà merci !

Gogeta25
Gogeta25
Niveau 34
03 mai 2006 à 14:56:46

Non, mais de toute facon, sa fait longtemsp que j´ai decider de me mettre au C/++, donc, je vais my mettre, mais je vais essayer de commencer en douceur.

dnob700
dnob700
Niveau 10
03 mai 2006 à 15:25:30

tauruxbis : si tu fait du C++, tu peut utiliser les variables de type vector (tu fait #include <vector> puis using namespace std;)

Et là tu crée une variable du type :

vector<long> tableau;
et ton tableau est pret, et de la taille que tu veux.

tu mets un truc dedans come ceci :
tableau[5]=13; //par exemple.
et tu lis les données de la même manière.

tauruxbis
tauruxbis
Niveau 10
03 mai 2006 à 21:13:52

:ok: , il ne me manque plus que la vérification de l´intégrité d´un nombre :D

dnob700
dnob700
Niveau 10
03 mai 2006 à 21:40:46

comme tu ne manipule que des int, tout tes nombres sont des entiers.

Mais si tu veux vérifier qu´une division rend bien un nombre entier, tu peut faire :

//vérifier que a/b est entier :
if (a%b==0)
//alors a/b est bien un entier.

tauruxbis
tauruxbis
Niveau 10
03 mai 2006 à 22:22:18

ah mais bien sur, les modulos !! !!

Grand merci !!

Je ferais le programme demain donc !!

tauruxbis
tauruxbis
Niveau 10
03 mai 2006 à 23:41:22

Alors j´ai un petit probleme...

J´inityalise le tableau vectoriel comme tu m´as dis (j´ai préalablement inclus "vector" et mis using namespace std;) :

vector<long> tableau;

le probleme c´est quand j´entre une valeur (la compilation se passe bien, c´est a l´execution) : le programme se ferme.

tauruxbis
tauruxbis
Niveau 10
03 mai 2006 à 23:44:15

Bon j´y vais, je vous met le code si vous voulez tester quoi que ce soit :

  1. include <stdlib.h>
  2. include <stdio.h>
  3. include <iostream>
  4. include <vector>

using namespace std;

int main()
{
int nDividende=18;
int s=9;
int h=2;
vector<long> tableau;
int nDiviseur=0;
system("PAUSE");
tableau[1]=1;
tableau[2]=2;
tableau[3]=3;
tableau[4]=5;
tableau[5]=7;
tableau[6]=11;
tableau[7]=13;
tableau[8]=17;
while (nDividende==100000)
{
nDiviseur=tableau[h];
if (nDividende%nDiviseur==0)
{
nDividende++;
h=2;
}else
{
h++;
}
if (nDiviseur >= (nDividende/2))
{
tableau[s]=nDividende;
s++;
cout << endl << nDividende;
nDividende++;
h=2;
}
}
system("pause");
return 0;
}

a demain !

tauruxbis
tauruxbis
Niveau 10
03 mai 2006 à 23:46:10

tiens ben déja ya une erreur : c´est while (nDividende != 100000)

voila le code de nouveau :

  1. include <stdlib.h>
  2. include <stdio.h>
  3. include <iostream>
  4. include <vector>

using namespace std;

int main()
{
int nDividende=18;
int s=9;
int h=2;
vector<long> tableau;
int nDiviseur=0;
system("PAUSE");
tableau[1]=1;
tableau[2]=2;
tableau[3]=3;
tableau[4]=5;
tableau[5]=7;
tableau[6]=11;
tableau[7]=13;
tableau[8]=17;
while (nDividende!=100000)
{
nDiviseur=tableau[h];
if (nDividende%nDiviseur==0)
{
nDividende++;
h=2;
}else
{
h++;
}
if (nDiviseur >= (nDividende/2))
{
tableau[s]=nDividende;
s++;
cout << endl << nDividende;
nDividende++;
h=2;
}
}
system("pause");
return 0;
}

a demain !

tauruxbis
tauruxbis
Niveau 10
03 mai 2006 à 23:53:38

C´est bon j´ai résolu : il faut initialiser le tableau de façon habituelle :

long tableau[xnombre];

j´ai juste besoin de savoir quelle est la taille maximum d´un tableau long afin d´avoir un maximum de nombre premiers (en fait j´utiliserait alors plusieurs tableau comme je faisait avec les dimensions de la matrice sur ma TI)

dnob700
dnob700
Niveau 10
04 mai 2006 à 01:28:54

la tailel maximum d´un tableau ne dépend que de ta mémoire libre.

Mais si tu utilise Dev C++, alors alloué statiquement (comme tu le fait, en déclarant la taille du tableau dans le code source), la taille est bien plus limité car sous windows dev c++ ne sait pas allouer un tas correcte.

Il faut donc que tu alloue toi même ton tableau (va voir sur le site du zéro il y a un cour là dessus).

tauruxbis
tauruxbis
Niveau 10
04 mai 2006 à 11:49:30

allouer statiquement, allouer soit même... différences ? j´ai pas bien compris. Sur le site du zero, j´ai bien vu un tableau a "dimension dynamique" mais ça a l´air impossible, et de toute façon, ça ne me dis pas comment savoir la taille maximale que je peux allouer a un tableau...

dnob700
dnob700
Niveau 10
04 mai 2006 à 16:00:21

il n´y a pas de taille maximale (quoi que, 4 milliard d´élément doit être le maximum sur de nombreuse machine), mais c´est limité par la taille de ta mémorie disponible.

Ce n´est pas la bonne manière de concevoir ton programme : il ne faut pas te demander quelle taille puis-je allouer, mais de quelle taille ais-je besoin. Car je t´assure que tu n´a pas besoin d´un tableau de plusieurs milliard d´éléments, et pourtant tu pourrait en faire un.

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment