Hej!
Lyckades inte skapa en ny tråd så nu lånar jag den här C# tråden haha...
Är en nybörjade i C# som håller på att skapa ett projekt där vi ska räkna ut Alkohol per krona samt spara detta till ett objekt i en vektor som därefter ska sparas till fil. Vårt problem är att ingenting sparas i filen men lyckas inte se vad felet är. Ni får ha överseende med att koden inte på något sett är perfekt men utöver att ingenting sparas i txt-filen så har det ändå fungerat...
Någon som vill rädda vår dag(och betyg....) och se om den kan se vad som är tokigt?
Observera att koden inte är fullständig ännu och vissa av valen saknar funktion och ex bubblesort...
HÄR BÖRJAR KODEN:
using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ConsoleApplication20;
namespace ConsoleApplication20
{
class Program
{
public static Dryck[] drycker = new Dryck[0];
private static string namn;
public static void Main()
{
Ladda();
{
int i = 0; // gör det möjligt att återgå till huvudmeny samt att få upp menyn igen efter felaktigt tangentval
while (i < 1)
{
Console.WriteLine("ANGE ETT VAL:\n" + // Meny, gör att valen blir på olika rader
"\n1 : Uträkning av APK| " +
"\n--------------------|" +
"\n2 : Summering |" +
"\n--------------------|" +
"\n3 : Information |" +
"\n--------------------|" +
"\n4 : Avslut |" +
"\n--------------------|" );
String s1 = null; // kolla upp vad detta är, går dock ej vara utan
s1 = Console.ReadLine().ToString();
switch (s1)
{
case "1":
Dryck nyDryck = new Dryck();
Console.WriteLine(" (Observera att samtliga värden anges i siffror, samt alkoholhalt anges ex 0,12 för 12% ) \n");
i++;
Console.WriteLine("Ange namn på drycken");
namn= Console.ReadLine();
nyDryck.namn = namn;
Console.WriteLine("Ange mängd i milliliter");
double mängd = 0;
while (!double.TryParse(Console.ReadLine(), out mängd)) // om det skrivs i bokstäver så kommer feltext upp
{ Console.WriteLine("försök igen i enbart siffror"); }
nyDryck.mängd = mängd;
double pris = 0;
Console.WriteLine("Ange pris i kr"); // måste tillägga fler felkontroller på samtliga val
while (!double.TryParse(Console.ReadLine(), out pris)) // om det skrivs i bokstäver så kommer feltext upp
{ Console.WriteLine("försök igen i enbart siffror"); }
nyDryck.pris = pris;
double alkoholhalt = 0;
Console.WriteLine("Ange alkoholhalt");
while (!double.TryParse(Console.ReadLine(), out alkoholhalt)) // om det skrivs i bokstäver så kommer feltext upp, hur ändra så ex 0.12 går skriva?
{ Console.WriteLine("försök igen, använd , istället för ."); }
nyDryck.alkoholhalt = alkoholhalt;
double alkoholperkrona = 0;
alkoholperkrona = mängd * alkoholhalt / pris; // uträkning, fungerar ej helt ännu
Console.WriteLine(alkoholperkrona + "liter alkohol/kr");
nyDryck.alkoholperkrona = alkoholperkrona;
if (alkoholperkrona < 0.1)
{
Console.WriteLine("Dyrt!!");
}
else if (alkoholperkrona > 1)
{
Console.WriteLine("Helt ok!");
}
else if (alkoholperkrona > 1.15)
{
Console.WriteLine("Bra!");
}
else if (alkoholperkrona > 1.5)
{
Console.WriteLine("Mycket bra!");
}
else if (alkoholperkrona > 1.9)
{
Console.WriteLine("Fantastiskt!");
}
else
{
Console.WriteLine("WOW!");
}
//anropa metod som lägger till i vektor
UtökaVektor(nyDryck);
Console.WriteLine("Tryck på valfri tangent för att återgå till huvudmenyn");
Console.ReadKey(); // läser av valfri tangent
Console.Clear(); // tömmer skärmen
i = 0; // visar huvudmenyn på nytt
break;
case "2":
i++;
Console.WriteLine("Här ser du en summering av tidigare uträkningar");
Console.WriteLine("\nTryck på valfri tangent för att återgå till huvudmenyn");
Console.ReadKey(); // läser av valfri tangent
Console.Clear(); // tömmer skärmen
i = 0; // visar huvudmenyn på nytt
break;
case "3":
i++;
Console.WriteLine("information om hur APK fungerar");
Console.WriteLine("\nAlkohol per krona (APK) är ett mått för hur många milliliter ren alkohol ");
Console.WriteLine("man får för en krona, vid köp av alkoholhaltig dryck. APK stiger ");
Console.WriteLine("då dryckens pris sjunker eller alkoholhalten stiger");
Console.WriteLine("vilket innebär att ett lägre värde ger en dyrare berusning.");
Console.WriteLine("Varmt välkommen att klicka dig runt i de olika kategorierna");
Console.WriteLine("och spana in APK-värdet för just din favoritdryck!");
Console.WriteLine("\nTryck på valfri tangent för att återgå till huvudmenyn");
Console.ReadKey(); // läser av valfri tangent
Console.Clear(); // tömmer skärmen
i = 0; // visar huvudmenyn på nytt
break;
case "4":
i++;
break;
case "5":
Spara();
break;
default:
int val = 0;
Console.WriteLine("felaktigt val, testa igen"); // default innebär att när användaren anger annat än menyvalen så dyker denna feltext upp
i = 0;
while (!int.TryParse(Console.ReadLine(), out val))
{ Console.WriteLine("försök igen i enbart siffror"); } // om val görs i annat än siffror
break;
}
}
}
Spara();
}
public static void BubbleSort(int[] nyVektor)
{
bool osorterad = true;
int end = nyVektor.Length - 1;
while (osorterad)
{
osorterad = false;
for (int j = 0; j < end; j++)
{
if (nyVektor[j] > nyVektor[j + 1])
{
Swap(nyVektor, j, j + 1);
osorterad = true;
}
}
end--;
}
}
public static void Swap(int[] nyVektor, int a, int b)
{
int r = nyVektor[a];
nyVektor[a] = nyVektor[b];
nyVektor[b] = r;
}
public static void UtökaVektor(Dryck nytt)
{
Dryck[] nyVektor = new Dryck[drycker.Length + 1];
for (int i = 0; i < drycker.Length; i++)
{
nyVektor[i] = drycker[i];
}
nyVektor[drycker.Length] = nytt;
drycker = nyVektor;
}
public static void Ladda()
{
StreamReader infil = new StreamReader("drycker.txt");
string rad;
while ((rad = infil.ReadLine()) != null)
{
Dryck m = new Dryck();
string[] fält = rad.Split('\t');
m.namn = (fält[0]);
m.mängd = double.Parse(fält[1]);
m.pris = double.Parse(fält[2]);
m.alkoholhalt = double.Parse(fält[3]);
m.alkoholperkrona = double.Parse(fält[4]);
UtökaVektor(m);
}
infil.Close();
}
public static void Spara()
{
StreamWriter utfil = new StreamWriter("drycker.txt");
for (int i = 0; i < drycker.Length; i++)
{
Dryck m = drycker[i];
utfil.Write("{0}\t{1}\t{2}\t{3}\t{4}\t",m,namn, m.mängd, m.pris, m.alkoholhalt, m.alkoholperkrona);
}
utfil.Close();
}
}
}
(KLASS)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication20
{
public class Dryck
{
public string namn = null;
public double mängd = 0; // deklarering av lokala variabler
public double pris = 0;
public double alkoholhalt = 0;
public int val = 0;
public double apk = 0;
public double alkoholperkrona = 0;
public override string ToString()
{
return mängd + " " + pris + ", " + alkoholhalt + " (" + alkoholperkrona + ")";
}
}
}