Forum » Programiranje » C[#]Cannot implicitly convert type 'string' to 'long'.
C[#]Cannot implicitly convert type 'string' to 'long'.
Cvenemir ::
Prosil bi za pomoč pri odpravljanju napake za naslednjo kodo. V naslovu omenjena napaka se pojavi v programu main, ki preverja delovanje podprogramov.
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Delo_z_binarnimi_števili { class Program { // Funkcija za pretvorbo iz destiške v binarno obliko static string decToBin(long vhodnoStevilo) { string rezultat = ""; // Nadaljuj dokler vhodno stevilo ni enako nic while (vhodnoStevilo > 0) { // Rezultatu dodamo spredaj 0 ali 1, odvisno od ostanka rezultat = (vhodnoStevilo % 2) + rezultat; // Vhodno stevilo delimo z 2 in nadaljujemo vhodnoStevilo /= 2; } return rezultat; } // Funkcija za pretvorbo iz binarne v desetiško obliko static long binToDec(string vhodniNiz) { long rezultat = 0; // Zanka skozi binarni niz, zacnemo na levi strani for (int i = 0; i < vhodniNiz.Length; ++i) // Rezultatu vsakic pristejemo binarno vrednost (0 ali 1), množeno z 2 na potenco, // ki je enaka (vhodniNiz.Length - 1) - i rezultat += long.Parse(vhodniNiz[i].ToString()) * (long)Math.Pow(2, vhodniNiz.Length - 1 - i); return rezultat; } //Glavni program, s katerim preverimo delovanje funkcij static void Main(string[] args) { //Branje vhodnih nizov in pretvorba v int Console.Write("Vnesite prvo število v binarni obliki: "); string vhodniNizBinarni1 = Console.ReadLine(); long stevilo1 = binToDec(vhodniNizBinarni1); Console.Write("Vnesite drugo število v binarni obliki: "); string vhodniNizBinarni2 = Console.ReadLine(); long stevilo2 = binToDec(vhodniNizBinarni2); //Računanje vsote, razlike , operacije IN in operacije ALI long vsotaStevil = stevilo1 + stevilo2; long razlikaStevil = stevilo1 - stevilo2; long operacijaIN = stevilo1 & stevilo2; long operacijaALI = stevilo1 | stevilo2; //Pretvorba vsote in razlike nazaj v bin in izpis rezultata vsotaStevil = decToBin(vsotaStevil); Console.WriteLine("Vsota podanih števil je: ", vsotaStevil); razlikaStevil = decToBin(razlikaStevil); Console.WriteLine("Razlika podanih števil je: ", razlikaStevil); operacijaIN = decToBin(operacijaIN); Console.WriteLine("Rezultat operacije IN je: ", operacijaIN); operacijaALI = decToBin(operacijaALI); Console.WriteLine("Rezultat operacije ALI je: ", operacijaALI); // Pritisni katerokoli tipko za izhod Console.ReadKey(); } } }
LeQuack ::
Napaka je zato, ker je binarna vrednost v obliki niza, se pravi string, ki ga hočeš shraniti v numerično obliko long. Za izpis ne rabiš z vrnjeno vrednostjo narediti nič drugega, kot jo samo izpisati.
//Glavni program, s katerim preverimo delovanje funkcij static void Main(string[] args) { //Branje vhodnih nizov in pretvorba v int Console.Write("Vnesite prvo število v binarni obliki: "); string vhodniNizBinarni1 = Console.ReadLine(); long stevilo1 = binToDec(vhodniNizBinarni1); Console.Write("Vnesite drugo število v binarni obliki: "); string vhodniNizBinarni2 = Console.ReadLine(); long stevilo2 = binToDec(vhodniNizBinarni2); //Računanje vsote, razlike , operacije IN in operacije ALI long vsotaStevil = stevilo1 + stevilo2; long razlikaStevil = stevilo1 - stevilo2; long operacijaIN = stevilo1 & stevilo2; long operacijaALI = stevilo1 | stevilo2; //Pretvorba vsote in razlike nazaj v bin in izpis rezultata Console.WriteLine("Vsota podanih števil je: {0}", decToBin(vsotaStevil)); Console.WriteLine("Razlika podanih števil je: {0}", decToBin(razlikaStevil)); Console.WriteLine("Rezultat operacije IN je: {0}", decToBin(operacijaIN)); Console.WriteLine("Rezultat operacije ALI je: {0}", decToBin(operacijaALI)); // Pritisni katerokoli tipko za izhod Console.ReadKey(); }
Quack !
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | C# program za pretvorbo v desetiško število z rekurzijoOddelek: Programiranje | 1473 (1196) | MrStein |
» | KalkulatorOddelek: Programiranje | 1312 (1079) | lebdim |
» | [c#] Optional parameters must appear....Oddelek: Programiranje | 778 (685) | lambda |
» | [C#] Operacija IN in ALI med dvema int številomaOddelek: Programiranje | 1166 (979) | LeQuack |
» | [C#] Input string was not in a correct format.Oddelek: Programiranje | 1078 (1015) | Cvenemir |