» »

c# program

c# program

Pebo111 ::

Pozdravljeni. Potrebujem pomoč pri izvedbi programa:

Izdelajte program, ki bo prebral niz znakov in določil koliko besed je v njem. Besede so med seboj ločene s poljubno kombinacijo presledkov in ločil (, . ! ; ? : -). Upoštevajte, da je lahko med besedami več kakor eno ločilo. V primeru, da je v besedi prisotna številka, naj se ta beseda pri štetju ne upošteva.

Opomba: kot besedo štejte tudi tiste podnize, ki vsebujejo samo eno črko.

Primer

Vhod: Včeraj, ko sem šel domov - s kolesom - sem naletel na napis: 1kratnih Letecih12!!? Zanimivo; res zanimivo.
Izhod: Število besed: 14.

Nesmemo uporabljati nobenih "naprednih možnosti", ampak si nekako neznam predstavljat, kako bi ta program sploh zgledal.
Vsaka pomoč bo dobrodošla, Lp

MisterR ::

In kje rabiš pomoč oz kje se ti je zataknilo? Prilepi programsko kodo, ki si jo spisal, da vidimo kako in kaj. Samo tako ti lahko pomagamo.

Pebo111 ::

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

namespace Stetje_besed
{
   
    class Program
    {
        static void Main(string[] args)
        {
            //Definicija spremenljivk
            int steviloBesed = 0;
            string besedilo;
            char[] locila = { ' ', ',', '.', '!', '_', '?', '-',';',':'};

            Console.WriteLine("Vnesite besedilo: ");
            //Vnos besedila
            besedilo = Console.ReadLine();

            //Deljenje besedila na posamezne besede 
            string[] besede = besedilo.Split(locila, StringSplitOptions.RemoveEmptyEntries);

            foreach (string beseda in besede)
            {
                Console.WriteLine("{0}", beseda);
                steviloBesed++;
            }
            /*foreach (string besedaa in besede)
            {
                for (int i = 0; i < besedaa.Length; i++)
                {
                    if (besedaa[i] >= '0' && besedaa[i] <= '9')
                        steviloBesed--;
                }
            }
            */
            

            Console.WriteLine("Število besed: {0}", steviloBesed);
            Console.ReadKey();
        }
    }
}


Problem je v tem, da neznam postaviti kode tako, da mi nebi zraven štelo tudi besed, katere vsebujejo števila.

ZeleniJure ::

Števec za besedo povečaj šele takrat ko veš da v njej ni številk.

Pebo111 ::

hmmm, mi daš kak namig?

boogie_xlr ::

tik preden steviloBesed++; preveri če beseda vsebuje cifre

ZeleniJure ::

Nekaj podobnega kot že imaš:
for (int i = 0; i < besedaa.Length; i++)
                {
                    if (besedaa[i] >= '0' && besedaa[i] <= '9')
                        steviloBesed--;
                }


Uporabi en flag (boolean ki pove če je notri kakšna številka) in prekini for zanko ko najdeš številko. Po for loopu pa preveri če si našel besedo in povečaj counter.

Pebo111 ::

naj mi en prosim napiše ta popravljen del, ker meni ne rata.

smacker ::

Regex to reši v 1 vrstici:
int steviloBesed = Regex.Matches(besedilo, @"\b\p{L}+\b", RegexOptions.CultureInvariant).Count;

OmegaM ::

Poigraj se z metodama isdigit, isnumber.
Ni nam lahko, bo pa boljše!!!

Pebo111 ::

smacker, nesmemo uporabljat "naprednih" stvari.. citiram..

smacker ::

Tut kopirat kode iz foruma ne smete, pa te tisto ne moti preveč.

ZeleniJure ::

Pebo111 je izjavil:

naj mi en prosim napiše ta popravljen del, ker meni ne rata.

1. korak: if stavek maš že. Dekleriraj spremenljivko isPropperWord, inicializiraj jo na false in jo daj na true v if stavku.

Pebo111 ::

  int steviloBesed = 0;
            string besedilo;
            bool a=true;
            char[] locila = { ' ', ',', '.', '!', '_', '?', '-', ';', ':' };

            Console.WriteLine("Vnesite besedilo: ");
            //Vnos besedila
            besedilo = Console.ReadLine();

            //Deljenje besedila na posamezne besede 
            string[] besede = besedilo.Split(locila, StringSplitOptions.RemoveEmptyEntries);

            foreach (string beseda in besede)
            {
                Console.WriteLine("{0}", beseda);
                for (int i = 0; i < beseda.Length; i++)
                {
                    if (beseda[i] >= '0' && beseda[i] <= '9')

                        a = false;
                    else
                        a = true;


                }
                    if(a)
                    steviloBesed++;

            }

            Console.WriteLine("Število besed: {0}", steviloBesed);
            Console.ReadKey();
        }
    }
}

ZeleniJure, se igram s tem že cel dan, pa mi ne rata.

eko_2k4 ::

Cim najdes prvo stevilo v besedi postavi a na false in zapusti zanko. Kot imas sedaj je vse odvisno od zadnjega znaka v besedi :)

ZeleniJure ::

1.
else
   a = true;


Kot je napisal eko...namesto kode zgoraj daš

break;


2. a vedno postaviš na true tik pred for zanko

Potem mislim da bi znalo bit to to...


Vredno ogleda ...

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

[C#] Domača naloga - osnove

Oddelek: Programiranje
372498 (1715) 11tomi12
»

[c#] Majhen problemček

Oddelek: Programiranje
101004 (812) darkolord
»

Štetje besed v nizu (C#)

Oddelek: Programiranje
51062 (1000) Spura
»

branje iz datoteke c#

Oddelek: Programiranje
141642 (1371) darkolord
»

c# težava delo z nizi

Oddelek: Programiranje
131522 (1373) Tutankhamun

Več podobnih tem