Tablice - proste zadania ze sprawdzaniem elementów

0

Hej,
mam problem z dwoma zadaniami z tematu tablic.
1.Czy w napisie jest więcej liter niż cyfr?
2.Ile jest w tablicy liczb zaczynających się od cyfry 7?

Do pierwszego nie mam pomysłu jak się zabrać i prosiłbym o jakąś wskazówkę, a w drugim zacząłem:

  static int IleLiczbNa7(int[] tab)
        {
            int suma = 0;
            
            //{10,16,17,71,703,322378,7}
            foreach (int w in tab)
            {
                int s = w;
                if (s < 10)
                {
                    if (s == 7)
                        suma += 1;
                }
                else
                {
                    while (s < 10)
                    {
                        s = s / 10;
                    }
                    if (s == 7)
                        suma += 1;
                }
            }
            return suma;


        }

Tylko wyniki się nie zgadzają więc coś nie hula + nie wydaje mi sie, aby był to najbardziej elegancki sposób ;)
Będę wdzięczny za wszelkie sugestie, dzięki :)

1

Co do pierwszego, to zapoznaj się z metodami char.IsLetter, char.IsDigit.
Co do drugiego, to "niematematycznie" możesz po prostu zrobić ToString i sprawdzić pierwszy znak.

0

zamiast tablicy intow przyjmowalbym tu tablice charow. lub obiekt string

zrobienie zadania byloby duzo prostsze

0

Ok, dzięki :) Pierwsze chyba mam:

  static void LiteraCzyCyfra(string napis)
        {
            int sumaLiter = 0;
            int sumaCyfr = 0;

            for (int i = 0; i < napis.Length; i++)
            {
                if (char.IsDigit(napis[i]))
                    sumaCyfr++;
                if (char.IsLetter(napis[i]))
                    sumaLiter++;
            }
            if (sumaCyfr == sumaLiter)
            {
                Console.WriteLine("Tyle samo");
                return;
            }
            if (sumaCyfr > sumaLiter)
            {
                Console.WriteLine("Wiecej cyfr");
                return;
            }
            else
            {
                Console.WriteLine("WIecej liter");
                return;
            }
        }

natomiast nie bardzo wiem jak wykorzystać ToString aby rozwiązać to zadanko :/

1
using System;

public class Test
{
	public static void Main()
	{
		IleLiczbNa7(new int[] {7,77,777,2,1});
	}
	static int IleLiczbNa7(int[] tab)
	{
	  int ileSiodemek = 0;
	  foreach (var liczba in tab) // to mozesz bez problemow zmienic na petle for / while
	  {
	    if (liczba.ToString()[0] == '7')
	    {
	      ileSiodemek ++;
	    }
	  }
	  return ileSiodemek;
	}
}
0

Super, bardzo dziękuję ;)
Możesz jeszcze mi powiedzieć czemu zamiast

napis.ToString()[0] 

używasz zapisu

 napis.ToString()?[0]

Co oznacza "?" ?
Dzięki wszystkim raz jeszcze za pomoc

1 użytkowników online, w tym zalogowanych: 0, gości: 1