» »

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 ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

C# program za pretvorbo v desetiško število z rekurzijo

Oddelek: Programiranje
81473 (1196) MrStein
»

Kalkulator

Oddelek: Programiranje
111312 (1079) lebdim
»

[c#] Optional parameters must appear....

Oddelek: Programiranje
6778 (685) lambda
»

[C#] Operacija IN in ALI med dvema int številoma

Oddelek: Programiranje
111166 (979) LeQuack
»

[C#] Input string was not in a correct format.

Oddelek: Programiranje
61078 (1015) Cvenemir

Več podobnih tem