calculette
4 participants
Page 1 sur 1
calculette
bon bah jpense avoir fé un ptit truc pas mal par contre on peu mettre ke 1 seul signe opératoire donc ca peu etre amélioré lol
et en fait jvien de voir ke javé pas du tou pensé o nombre a virgule lol
voila le code:
et en fait jvien de voir ke javé pas du tou pensé o nombre a virgule lol
voila le code:
using System;
using System.Collections.Generic;
using System.Text;
namespace calculette
{
class Program
{
static void Main(string[] args)
{
string s;
int i, j = 0, k = 0;
int l;
string[] Signe = new string[50];
Decimal[] T = new Decimal[50];
Console.WriteLine("saisir une opération ou appuyé sur *:");
s = Console.ReadLine();
while (s != "*")
{
l = s.Length;
for (i = 0; i <= l - 1; i++)
{
if (!(char.IsNumber(s, i)))
{
Signe[i] = s.Substring(i, 1);
j = i;
T[k] = Convert.ToInt32(s.Substring(0, i));
k++;
}
}
T[k] = Convert.ToInt32(s.Substring(j + 1, (s.Length - j) - 1));
if (Signe[j] == "*")
Console.WriteLine(T[0] * T[1]);
if (Signe[j] == "+")
Console.WriteLine(T[0] + T[1]);
if (Signe[j] == "-")
Console.WriteLine(T[0] - T[1]);
if (Signe[j] == "/")
Console.WriteLine(T[0] / T[1]);
Console.WriteLine("saisir une opération ou appuyé sur *:");
s = Console.ReadLine();
Initialiser(T,Signe);
i = j = k = l = 0;
}
}
static void Initialiser(Decimal[] T,string[] S)
{
for (int i = 0; i <= T.Length - 1; i++)
T[i] = 0;
for (int i = 0; i <= S.Length - 1; i++)
S[i] = "";
}
}
}
kenpachi- Messages : 27
Date d'inscription : 01/12/2007
Feuille de personnage
Niveau: 1
Expérience:
(23/100)
Re: calculette
Voici la mienne elle gére .......
une seule chose a faire, rentrer la ligne de calcul et apuyer sur entrer
une seule chose a faire, rentrer la ligne de calcul et apuyer sur entrer
- Code:
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
//Merci a Ashura pour l'idée des tableau :p
class Program
{
static long Conversion(string calcul)
{
// nb concaténe les caracteres decimaux
// n[] stock les concatenation de nb
// ni index de n[]
// op[] stock les opérateurs
// no index de op[]
// ..... exemple ligne de calcul rentrée : 12 + 3 * 5
// ..... n[0]=12 n[1]=3 n[2]=5
// ..... op[0]="+" op[1] = "*"
string nb = "";
long[] n = new long[calcul.Length];
int ni = 0;
string[] op = new string[calcul.Length];
int no = 0;
// On test tous les caractere de la chaine pour determiner leurs natures
// IsNumber sert a savoir si un charactere est un nombre ou non.
// ..... exemple : IsNumber(ChaineATester,Index)
// si c'est un nombre on le stock dans nb jusqu'a l'arrivé du prochain opérateur
// Quand on tombe sur l'opérateur sa signifie la fin du nombre en cour alors on concatene, on converti,
// ..et on stock dans n[]
// Sinon on regarde quel est l'opérateur (+-*/)
// Et on fait l'opération qui convient
// ni++ pour passer a la case suivante du tableau n[]
// no++ pour la meme raison avec op[]
// On reinitialise nb a chaque fois pouvoir concatener le nombre suivant
// ..... Index 0 1 2 3
// ..... n[] 12 3 5
// ..... op[] + *
for (int i = 0; i < calcul.Length; i++)
{
if (char.IsNumber(calcul, i))
{
nb += calcul.Substring(i, 1);
}
else if (calcul.Substring(i, 1) == "+" || calcul.Substring(i, 1) == "-" || calcul.Substring(i, 1) == "/" || calcul.Substring(i, 1)=="*")
{
n[ni] = Convert.ToInt64(nb);
nb = "";
ni++;
op[no] = calcul.Substring(i, 1);
no++;
}
}
n[ni] += Convert.ToInt64(nb);
// ..... Index 0 1 2 3
// ..... n[] 12 3 5
// ..... op[] + *
// ..... 1ere etape 3*5
// ..... 2eme etape 12+(3*5)
// On garde la priorité des opérations en traitant d'abord les multiplications et les divisions
// On crée result pour stocker le resultat
long result=0;
for (int i = 0; i < ni; i++)
{
if (op[i] == "*")
result += n[i] * n[i + 1];
else if (op[i] == "/")
result += n[i] / n[i + 1];
else continue;
}
for (int i = 0; i < ni; i++)
{
if (op[i] == "+")
result += n[i + 1];
else if (op[i] == "-")
result -= n[i + 1];
else continue;
}
return result;
}
static void Main(string[] args)
{
string calcul;
calcul = Console.ReadLine();
Console.WriteLine(Conversion(calcul));
Console.ReadLine();
}
}
}
Dernière édition par le Jeu 13 Déc - 1:36, édité 1 fois
Phreno- Messages : 123
Date d'inscription : 29/11/2007
Age : 37
Feuille de personnage
Niveau: 2
Expérience:
(23/200)
Re: calculette
simple precision (je viens de m'en rendre compte ),
elle ne prend pas en compte les nombres a virgule (satané long), mais je pense qu'il suffit de remplacer tous les long par des double et ensuite elle ne gere pas plusieurs multiplication a la suite. du style 2*3*4 ( ou sont les beta testeur quand on en a besoin !!!!!)
elle ne prend pas en compte les nombres a virgule (satané long), mais je pense qu'il suffit de remplacer tous les long par des double et ensuite elle ne gere pas plusieurs multiplication a la suite. du style 2*3*4 ( ou sont les beta testeur quand on en a besoin !!!!!)
Phreno- Messages : 123
Date d'inscription : 29/11/2007
Age : 37
Feuille de personnage
Niveau: 2
Expérience:
(23/200)
Re: calculette
mdr ouai c lé mm pb ke moi lé virgule il aime pas lol.et plusieur opération il y arive pas non plus
fo dotre gens pour aider
fo dotre gens pour aider
kenpachi- Messages : 27
Date d'inscription : 01/12/2007
Feuille de personnage
Niveau: 1
Expérience:
(23/100)
Re: calculette
il doit bien y avoir un moyen
soit une histoire de classe, alors tout traiter séparément dans des fonctions ....
soit une histoire de classe, alors tout traiter séparément dans des fonctions ....
Phreno- Messages : 123
Date d'inscription : 29/11/2007
Age : 37
Feuille de personnage
Niveau: 2
Expérience:
(23/200)
Re: calculette
bon alors pour lé virgules c réglé ya plus de pb
voici le nouvo code yavé juste un ptit truc a rajouté apré le if(!(isnumber()))
code:
voici le nouvo code yavé juste un ptit truc a rajouté apré le if(!(isnumber()))
code:
- Code:
using System;
using System.Collections.Generic;
using System.Text;
namespace calculette
{
class Program
{
static void Main(string[] args)
{
string s;
int i, j = 0, k = 0;
int l;
string[] Signe = new string[50];
Decimal[] T = new Decimal[50];
Console.WriteLine("saisir une opération ou appuyé sur *:");
s = Console.ReadLine();
while (s != "*")
{
l = s.Length;
for (i = 0; i <= l - 1; i++)
{
if (!(char.IsNumber(s, i)) && s.Substring(i,1)!=",")
{
Signe[i] = s.Substring(i, 1);
j = i;
T[k] = Convert.ToDecimal(s.Substring(0, i));
k++;
}
}
T[k] = Convert.ToDecimal(s.Substring(j + 1, (s.Length - j) - 1));
if (Signe[j] == "*")
Console.WriteLine(T[0] * T[1]);
if (Signe[j] == "+")
Console.WriteLine(T[0] + T[1]);
if (Signe[j] == "-")
Console.WriteLine(T[0] - T[1]);
if (Signe[j] == "/")
Console.WriteLine(T[0] / T[1]);
Console.WriteLine("saisir une opération ou appuyé sur *:");
s = Console.ReadLine();
Initialiser(T, Signe);
i = j = k = l = 0;
}
}
static void Initialiser(Decimal[] T, string[] S)
{
for (int i = 0; i <= T.Length - 1; i++)
T[i] = 0;
for (int i = 0; i <= S.Length - 1; i++)
S[i] = "";
}
}
}
kenpachi- Messages : 27
Date d'inscription : 01/12/2007
Feuille de personnage
Niveau: 1
Expérience:
(23/100)
Re: calculette
bravo mes féliciatation les mec on voit les pro du c#
b2c78- Messages : 272
Date d'inscription : 30/11/2007
Age : 36
Localisation : Vernouillet (78)
Feuille de personnage
Niveau: 2
Expérience:
(172/200)
Re: calculette
lol c gentil mé lé pro y zoré réussi a faire dé opération avec plusieur signe opératoire lol
kenpachi- Messages : 27
Date d'inscription : 01/12/2007
Feuille de personnage
Niveau: 1
Expérience:
(23/100)
Re: calculette
On se sent bête en lisant, ou en retard xD
Ashura- Messages : 150
Date d'inscription : 30/11/2007
Localisation : Sanctuary
Feuille de personnage
Niveau: 2
Expérience:
(46/200)
Re: calculette
tu te sens bete en lisant koi ashura ???
kenpachi- Messages : 27
Date d'inscription : 01/12/2007
Feuille de personnage
Niveau: 1
Expérience:
(23/100)
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|