C#

Résolu/Fermé
gilles81 Messages postés 67 Date d'inscription mardi 20 mai 2008 Statut Membre Dernière intervention 29 juillet 2009 - 21 déc. 2008 à 21:06
scriptiz Messages postés 1424 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 14 septembre 2023 - 26 déc. 2008 à 12:21
Bonjour,
je n'arrive pas a manipuler les float et les int. En fait je dis je voudrais ecrire une méthode qui me retournera un float, le problème les calculs effectués dans ma méthode sont aussi fait de integer, voici mon code:


class Publication
{
public String title;
public int sale;
public float price;
public int participation;
public String publicationName
{
get
{
return title;
}
set
{

title = value;
}
}
public int publicationSale
{
get
{
return sale;
}
set
{

sale = value;
}
}
public float publicationPrice
{
get
{
return price;
}
set
{

price = value;
}
}
public int participationPublication
{
get
{
return participation;
}
set
{
participation = sale *(int) price;

}
}
public override string ToString()
{

return String.Format("{0}{1}{2}",title,sale);


}
public virtual float CalculateFee()
{
float calculatefee = sale *(int) price / 100 * participation;

}

}
que puis-je faire pour tansformer sale *(int) price / 100 * participation en float
merci

4 réponses

scriptiz Messages postés 1424 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 14 septembre 2023 425
21 déc. 2008 à 21:08
Un cast devrait suffir :

float calculatefee = (float)(sale * (int)price / 100 * participation);


Ce qui donne donc :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Publication pub = new Publication();
            pub.publicationName = "Ma publi";
            pub.publicationSale = 102;
            pub.publicationPrice = 23;
            Console.WriteLine(pub);
            Console.ReadLine();
        }
    }

    class Publication
    {
        public String title;
        public int sale;
        public float price;
        public int participation;

        public String publicationName
        {
            get { return title; }
            set { title = value; }
        }

        public int publicationSale
        {
            get { return sale; }
            set { sale = value; }
        }

        public float publicationPrice
        {
            get { return price; }
            set { price = value; }
        }

        public int participationPublication
        {
            get { return participation; }
            set { participation = sale * (int)price; }
        }

        public override string ToString()
        {
            return String.Format("{0}, {1}, {2}", title, sale, price);
        }

        public virtual float CalculateFee()
        {
            float calculatefee = (float)(sale * (int)price / 100 * participation);
            return calculatefee;
        }
    }
}
.
0
gilles81 Messages postés 67 Date d'inscription mardi 20 mai 2008 Statut Membre Dernière intervention 29 juillet 2009 1
21 déc. 2008 à 21:30
c'est bon ca marche , je commettais une erreur de syntaxe
merci
0
gilles81 Messages postés 67 Date d'inscription mardi 20 mai 2008 Statut Membre Dernière intervention 29 juillet 2009 1
21 déc. 2008 à 21:27
ca m'affiche un message d'erreur : all code paths return a value. ESt ce le property participation qui pose probleme? Comment appelle t on la méthode get d'un property

merci
0
scriptiz Messages postés 1424 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 14 septembre 2023 425
21 déc. 2008 à 21:30
Ah désolé c'est parce que j'ai mit un return dans "public virtual float CalculateFee()" mais chez moi ça ne me fait pas d'erreurs.

Je ne sais pas comment est construit ton projet donc à toi de voir :)
0
gilles81 Messages postés 67 Date d'inscription mardi 20 mai 2008 Statut Membre Dernière intervention 29 juillet 2009 1
26 déc. 2008 à 11:34
Flux rss

* High-Tech
* Droit/Finances
* Santé/Médecine

Version anglaiseVersion espagnoleVersion française

* Vendredi 26 décembre 2008 - 11:31:06
* inscrits : 1131049
* connectés : 57281
* membres : 390
* questions/jour : 4956
* Taux de réponse : 74.73%

CommentCaMarche.net - Communauté informatique

* Tout le site
* Astuces
* Guide d'achat
* Forum
* Téléchargements
* Actualités
* Articles

gilles81
0 nouveau(x) message(s)

* Accueil
* Forum
* Astuces
* Télécharger
* Actualités
* Dossiers
* Guide d'achat
* Emploi
* Décideurs
o E-business
o Gestion de projet
o Infrastructures
o Qualité
o Sécurité informatique
o Logiciels professionnels
o

Posez votre question Format imprimable Liste des forums Aidez-les Statistiques Rechercher CharteForum Programmation
Mes interventions

* RSS Options
* Supprimer22:52 c# toString (Wardog)
* Supprimer21/12 c# (gilles81)
* Supprimer12/12 array c## (gilles81)
* Supprimer26/11 threads java (kilian)
* Supprimer09/11 initialisation c++ (neo1012)
* Supprimer07/11 enumeration c++ (kilian)
* Supprimer07/11 c++ énumération (Char Snipeur)
* Supprimer05/11 c++ (Char Snipeur)
* Supprimer26/10 linux (jeanbi)
* Supprimer13/10 java (gilles81)
* Voir mes interventions

A voir également Avast.com C héritage connaître type C# constructeur heritage Capture video hérités Ccleaner gratuit Clé wep Code de dragon ball z l'heritage de goku Code gta 4 ps3 Convertir wma en mp3 Correction td de heritage en java Cours heritage en mcd Creation d'une classe héritée Créer une adresse msn Exercice et cour sur l'heritage en java Exercices corrigée de l'héritage en java Exercices corrigés java héritage Exécuter un panneau de configuration hérité avec élévation de privilèges Film x connu Heritage en c# Heritage multiple c interface polynome Le bon coin Redefinir fonction classe hériter Skype.com Tchatche.com login Td de java héritage et classe abstraite et interface Www.club-nintendo.comPlus
Ils ont besoin de votre aide

* RSSOptions
* 11:31 aXXo (Logiciels/Pilotes)
* 11:30 pack office (Logiciels/Pilotes)
* 11:30 scanner (Programmation)
* 11:30 YPS3 impossible télécharger cd rom (Logiciels/Pilotes)
* 11:29 erreur (Logiciels/Pilotes)
* Tous les messages sans réponse

Plateformes d'assistance
Windows
Linux/Unix
MacOS
Matériel/Hardware

Logiciels/Pilotes
Bureautique
Jeux vidéos
Audio numérique

Infographie/Photo
Vidéo numérique
Gravure
Téléphonie/PDA/GPS

Programmation
Webmastering
Réseaux
Internet

Messagerie/Chat
Virus/Sécurité
Discussions & Opinions des Communautés
Actualités
Etudes/Formation

Droit/Libertés
Cinéma/Télé

Musique/Radio
Loisirs/Divertissement

Suggestions
Café des membres

Café noir
Bureau CCMiste

Rechercher : dans
Par : Pertinence Date Nom d'utilisateur



Statut : Non résolu
C# héritage
gilles81, le vendredi 26 décembre 2008 à 08:05:59
Bonjour,
j'ai implémenté ceci :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Rayan2
{
class Publication
{
private String title;
private int sale;
private float price;
private int participation;
public String Title
{
get
{
return title;
}
set
{

title = value;
}
}
public int Sale
{
get
{
return sale;
}
set
{

sale = value;
}
}
public float Price
{
get
{
return price;
}
set
{

price = value;

}
}
public int Participation
{
get
{
return participation;
}
set
{
participation = sale * price;
Console.WriteLine("price als float: {0}, price als int: {1}", price, (int)price);


}
}
public override string ToString()
{

return String.Format("{0}\n----------------------\nTitel : {1}\nVerkaufszahlen : {2}\nPreis pro Stück ($) : {3}\nBeteiligungssatz : {4} %", title, sale, price, participation);

}
public virtual float CalculateFee()
{
float calculatefee = (float)(sale * (int)price / 100 * participation);
return calculatefee;

}

}
class Book : Publication
{
private int pages;
public int Pages
{
get
{
return pages;
}
set
{

pages = value;
}
}
public override string ToString()
{
return String.Format("{0}\n----------------------\nTitel : {1}\nVerkaufszahlen : {2}\nPreis pro Stück ($) : {3}\nBeteiligungssatz : {4} %\nPages : {5}", title, sale, price, participation,pages);
}


}
abstract class DigitalMediaj : Publication
{
private const float literalPropertyFee = 10000;
private int runTime;

public DigitalMediaj(int runTime)
{
this.runTime = runTime;
}
public float LiteralPropertyFee
{
get
{
return LiteralPropertyFee;
}
}
private int RuntimeMedium{
get
{
return runTime ;
}
set
{
runTime = value ;
}

}
public override float CalculateFee()
{
float calculatefee = (float)((sale * (int)price / 100 * participation)+(int) LiteralPropertyFee);
return calculatefee;

}
}
class Audio : DigitalMediaj
{





}
public class Movie : DigitalMediaj
{
private float movieRights;
public float MovieRights
{
get
{
return MovieRights;
}
set
{
MovieRights = value;
}
}
public override float CalculateFee()
{
float calculatefee = (float)(((sale * (int)price / 100 * participation) + (int)LiteralPropertyFee)+(int)MovieRights);
return calculatefee;

}
public override string ToString()
{
return String.Format("{0}{1}{2}{3}{4}{5}{6}", title, sale, price, participation, LiteralPropertyFee,MovieRights);
}
}
}



En fait je dois implémenter la méhode CalculateFee() qu'une seule fois , c'est à dire dans la classe Publication dont hérite la class Book et la classe DigitalMediaj. Les classes Audio et Movie heritent de la classe DigitalMediaj. Comment devrais-je utiliser la méthode CalculateFee() dans les autres classes sans la dupliquer.

En plus il ya une erreur de compilation qui persiste: Inconsistent accessibility: base class 'Rayan2.DigitalMediaj' is less accessible than class 'Rayan2.Movie'

merci
0
scriptiz Messages postés 1424 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 14 septembre 2023 425
26 déc. 2008 à 12:21
Bon voilà j'ai apporter quelques modifications :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Rayan2
{
    class Publication
    {
        private String _title;
        private int _sale;
        private float _price;
        private int _participation;

        public String Title
        {
            get { return _title; }
            set { _title = value; }
        }

        public int Sale
        {
            get { return _sale; }
            set { _sale = value; }
        }

        public float Price
        {
            get { return _price; }
            set { _price = value; }
        }

        public int Participation
        {
            get { return _participation; }
            set
            {
                _participation = (int)(_sale * _price);
                Console.WriteLine("price als float: {0}, price als int: {1}", price, (int)price);
            }
        }

        public override string ToString()
        {

            return String.Format("{0}\n----------------------\nTitel : {1}\nVerkaufszahlen : {2}\nPreis pro Stück ($) : {3}\nBeteiligungssatz : {4} %", Title, Sale, Price, Participation);

        }

        public virtual float CalculateFee()
        {
            float calculatefee = (float)(Sale * (int)Price / 100 * Participation);
            return calculatefee;
        }
    }

    class Book : Publication
    {
        private int _pages;

        public int Pages
        {
            get { return _pages; }
            set { _pages = value; }
        }

        public override string ToString()
        {
            return String.Format("{0}\n----------------------\nTitel : {1}\nVerkaufszahlen : {2}\nPreis pro Stück ($) : {3}\nBeteiligungssatz : {4} %\nPages : {5}", base.Title, base.Sale, base.Price, base.Participation, Pages);
        }
    }

    abstract class DigitalMediaj : Publication
    {
        private const float _literalPropertyFee = 10000;
        private int _runTime;

        public DigitalMediaj(int runTime)
        {
            this._runTime = runTime;
        }

        public float LiteralPropertyFee
        {
            get { return _literalPropertyFee; }
        }

        private int RuntimeMedium
        {
            get { return _runTime; }
            set { _runTime = value; }
        }

        public override float CalculateFee()
        {
            return (base.CalculateFee() + (int)LiteralPropertyFee);
        }
    }

    class Audio : DigitalMediaj
    {

    }

    public class Movie : DigitalMediaj
    {
        private float _movieRights;

        public float MovieRights
        {
            get { return _movieRights; }
            set { _movieRights = value; }
        }

        public override float CalculateFee()
        {
            return (base.CalculateFee() + (int)MovieRights);
        }

        public override string ToString()
        {
            return base.ToString() + String.Format("{0}{1}", base.LiteralPropertyFee, MovieRights); 
        }
    }
}


Sinon je te conseille de remplacer ceci :
        public int Participation
        {
            get { return _participation; }
            set
            {
                _participation = (int)(_sale * _price);
                Console.WriteLine("price als float: {0}, price als int: {1}", price, (int)price);
            }
        }


Par ceci (étant donné que tu ne modifie jamais la valeur de la participation avec value.
        public int Participation
        {
            get { return (int)(Sale * Price); }
        }


Tu peux y rajouter ton affichage console et ainsi supprimer le _participation, comme ça tu aura toujours la valeur de Sale * Price quand tu demandera Participation.
0