19. oktober 2011 - 23:31 Der er 11 kommentarer og
1 løsning

min første C# consol application

hej E
- Jeg har skrevet min første C# consol Application, som er en skole opgave, og vil derfor hør om der er nogen steder jeg kan forminskes min kode!!:). så noget der ka forminske eller laves smartere



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

namespace _123
{
    class Program
    {
        static void Main(string[] args)
        {
            //strings
            string svar;
            string svar1;

            //double       

            double Rumfang00 = 0;
            double top = 0;
            double bund = 0;
            double højde = 0;
            double længde = 0;
            double Rumfang = 0;
            double Pris = 0;
            double samledepris = 0;
            double samledepris01 = 0;

            Console.SetWindowSize(105, 40);
           
          //første menu som køres når programmet starter

            Console.WriteLine(" ");
            Console.WriteLine("Menu punkt");
            Console.WriteLine("N = Ny beregning");
            Console.WriteLine("Q = Quit");
            Console.WriteLine("indtast svar nu");
            svar1 = Console.ReadLine();

            // if sætning til menu 1 N
            if (svar1 == "N" | svar1 == "n")
            {
                Console.WriteLine("beregning af rumfang");

                Console.WriteLine(" ");

                Console.WriteLine("Indtast kanalenstop punkt, i meter med decimaler");
                top = Convert.ToDouble(Console.ReadLine());
                Console.WriteLine("Indtast kanalensbund punkt, i meter med decimaler");
                bund = Convert.ToDouble(Console.ReadLine());
                Console.WriteLine("Indtast kanlenshøjde, i meter med decimaler");
                højde = Convert.ToDouble(Console.ReadLine());
                Console.WriteLine("Indtast kanalenslængde, i meter med decimaler");
                længde = Convert.ToDouble(Console.ReadLine());

                Rumfang = top + bund * 0.5 * højde * længde;
                Console.WriteLine("Rumfanget er " + Rumfang + " m\x00B3");
                Console.WriteLine("");
            }

            //if menu 1 = Quick lukker!

            if (svar1 == "Q" | svar1 == "q")
            {

                return;
            }

            //for loop sørger for at koden køres igen og igen!
            for (int x = 0; x < 1; )
            {
                //menu 2 som kører hvergang en beregning er afsluttet
                Console.WriteLine("Menu punkt");
                Console.WriteLine("N = Ny beregning");
                Console.WriteLine("L = Ny Længde");
                Console.WriteLine("P = Ny Prisberegning");
                Console.WriteLine("Q = Quit");

                Console.WriteLine("indtast svar nu");

                svar = Console.ReadLine();


                //køres hvis der bliver tastet N i menu2
                if (svar == "N" | svar == "n")
                {
                    Console.WriteLine("beregning af rumfang");
                    Console.WriteLine(" ");

                    Console.WriteLine("Indtast kanalenstop punkt, i meter med decimaler");
                    top = Convert.ToDouble(Console.ReadLine());
                    Console.WriteLine("Indtast kanalensbund punkt, i meter med decimaler");
                    bund = Convert.ToDouble(Console.ReadLine());
                    Console.WriteLine("Indtast kanlenshøjde, i meter med decimaler");
                    højde = Convert.ToDouble(Console.ReadLine());
                    Console.WriteLine("Indtast kanalenslængde, i meter med decimaler");
                    længde = Convert.ToDouble(Console.ReadLine());

                    Rumfang = top + bund * 0.5 * højde * længde;
                    Console.WriteLine("Rumfanget er " + Rumfang + " m\x00B3");
                    Console.WriteLine("");
                }

                //køres hvis det bliver tastet L
                if (svar == "L" | svar == "l")
                {
                    Console.WriteLine("Indtast kanalenstop punkt, i meter med decimaler");
                    top = Convert.ToDouble(Console.ReadLine());

                    Rumfang00 = top + bund * 0.5 * højde * længde;
                    Console.WriteLine("Rumfanget er " + Rumfang00 + " m\x00B3");
                }

                //køres køresa hvis det bliver tastet P
                if (svar == "P" | svar == "p")
                {
                    Console.WriteLine("pris beregner");
                    Console.WriteLine("indtast pris");
                    Pris = Convert.ToDouble(Console.ReadLine());
                    samledepris = Rumfang + Pris;
                    samledepris01 = Rumfang00 + Pris;
                    Console.WriteLine(samledepris);
                    Console.WriteLine(samledepris01);


                }


                //køres hvis det bliver tastet Q
                if (svar == "Q" | svar == "q")
                {

                    return;
                }


            }



        }
    }
}
Avatar billede Syska Mester
19. oktober 2011 - 23:47 #1
default for value types er 0, så fjern dem, du overskriver alligevel.

svar.Equals("l", StringComparison.OrdinalIgnoreCase) i stedet for dine dual test med småt og stort.

Hvorfor har du den "næsten" samme kode 2 stedet?

Rumfang er m3 ... hvorfor deler du med 0.5 ?

            while(true)
            {
                //køres hvis det bliver tastet Q
                if (svar1 == "Q" | svar1 == "q")
                {

                    return;
                }
            }

Forstår ikke helt programmet ... men det er en anden ting.
Avatar billede Syska Mester
19. oktober 2011 - 23:48 #2
"top + bund * 0.5 * højde * længde;"

Hvad er det for en formel ?
19. oktober 2011 - 23:54 #3
1#
det er til beregning af rumfang, til en entreprenør, godt nok en fiktiv opgave.
og hvis jeg fjern 0, for jeg fejl så derfor er de sat der!
2#
til beregning af rumfang af en trapez
Avatar billede Syska Mester
20. oktober 2011 - 00:08 #4
Ahh, så giver det nok fin mening.

Din pris ser også mærkelig ud:
samledepris = Rumfang + Pris;

variabler er med CamelCase med begynde lille bogstav. Properties er ren CamelCase.

Så ved man altid hvor den variable man bruger kommer fra.

Men du burde kunne fjerne hele første del ... da det er dupplicate kode ... og du bør kunne genbruge det samme ... smid det ud i en metode og kald den begge steder hvis det skal være.

Men lad være med "copy/paste" programmering :-)
20. oktober 2011 - 00:12 #5
tak for tips :).
- smid et svar:).
Avatar billede Syska Mester
20. oktober 2011 - 00:29 #6
svar
Avatar billede heinzdmx Nybegynder
20. oktober 2011 - 01:03 #7
Det giver samme resultat i din kode, men hvis du har flere muligheder at vælge imellem så i stedet for en


svar = "n";

if (svar == "n") { }

if (svar == "p") { }

if (svar == "q") { }


Så lav i stedet en if else if eller en switch

svar = "n";

if (svar == "n") { }
else if (svar == "p") { }
else if (svar == "q") { }


svar = "n";

switch (svar)
    {
        case "n":
                  // code for n
                  break;
        case "q":
                  // code for q
                  break;
        case "p":
                  // code for p
                  break;
    }
Avatar billede heinzdmx Nybegynder
20. oktober 2011 - 01:12 #8
I tilfælde af at du vælger en switch så bør du lave en String.ToLower() før du switchen.

og if else skal self. være Equals(objectToCompare, StringComparison.OrdinalIgnoreCase)
20. oktober 2011 - 01:12 #9
smid et svar 7#

jeg deler lige point mellem jer d:
Avatar billede Syska Mester
20. oktober 2011 - 01:12 #10
Så ville jeg nok lave det med en "if", men det kommer helt an på hvordan valgmuliheder er.

single letter ... switch med en "ToLower()" på input.

Flere muligheder if/else, simpelthen fordi der er mulighed for komplekse boolske udtryk.

mvh
Avatar billede hansepeter2 Nybegynder
20. oktober 2011 - 01:20 #11
En uendelig for-løkke laves normalt sådan:

for(;;){

}

hvis ikke man er til

while(true){


}
Avatar billede janus_007 Nybegynder
20. oktober 2011 - 09:09 #12
Du kan også skrive dine variabler sådan her:

double Rumfang00 = 0, top = 0, bund = 0;

Det giver i nogen tilfælde en bedre læselighed :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester



IT-JOB

Udviklings- og Forenklingsstyrelsen

Business Analysts til Internationalt Samarbejde

Saab Danmark A/S

Junior System Engineer

IT-Universitetet i København

Infrastrukturspecialist til IT-afdelingen

Udviklings- og Forenklingsstyrelsen

Erfaren og tillidsskabende scrum master