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 | 1561 (1284) | MrStein |
» | KalkulatorOddelek: Programiranje | 1367 (1134) | lebdim |
» | [c#] Optional parameters must appear....Oddelek: Programiranje | 824 (731) | lambda |
» | [C#] Operacija IN in ALI med dvema int številomaOddelek: Programiranje | 1227 (1040) | LeQuack |
» | [C#] Input string was not in a correct format.Oddelek: Programiranje | 1127 (1064) | Cvenemir |