Forum PCLab.pl: [C#]Zadania na zaliczenie - Forum PCLab.pl

Skocz do zawartości

Uwaga! Uwaga! Lubisz gry w klimatach fantasy? Zmierz się z tysiącami graczy, zagraj za darmo w grę Fragoria!

Otwarty

Ikona Ostatnio dodane tematy

Ikona Najnowsze pliki

  • (2 Stron)
  • +
  • 1
  • 2
  • Nie możesz rozpocząć nowego tematu
  • Nie możesz odpowiadać w tym temacie

[C#]Zadania na zaliczenie Oceń temat: -----

#1 Użytkownik jest niedostępny   hultek Ikona

  • Addicted to music
  • PipPipPipPipPip
  • Grupa: Forumowicze
  • Postów: 5244
  • Dołączył: Pt, 23 Wrz 05

Napisany 08 Luty 2012 - 15:41

Hejka hej. Egzamin mam w sobotę z C sharpa i nasz wykładowca/profesor jest fatalny w przekazywaniu wiedzy, więc około 60 osób nie potrafi napisać programów, które ten koleś sobie życzy! Anyways, na poprzednim egzaminie były takie zadania i na przykładzie tych zadań chciałbym się nauczyć:

Cytuj

1. Napisac metode taka, aby wiersz wejsciowy drukowany byl w postaci nastepujacego trojkata

WWWWWWWWWWWWWWWW
IIIIIIIIIIIIIII
EEEEEEEEEEEEEE
RRRRRRRRRRRRR
SSSSSSSSSSSS
ZZZZZZZZZZZ

WWWWWWWWWW
EEEEEEEEE
JJJJJJJJ
ŚŚŚŚŚŚŚ
CCCCCC
IIIII
OOOO
WWW
YY
.


Lub:
WIERSZWEJŚCIOWY.
WIERSZWEJŚCIOWY
WIERSZWEJŚCIOW
WIERSZWEJŚCIO
WIERSZWEJŚCI
WIERSZWEJŚC
WIERSZWEJŚ
WIERSZWEJ
WIERSZWE
WIERSZW

WIERSZ
WIERS
WIER
WIE
WI
W




2. Napisz program wypisujacy wszystkie liczby naturalne trzycyfrowe (nie dwucyfrowe), ktorychb suma cyfr jest podzielna przez 9 i 5

3. Napisz metode ktora w tablicy liczb typu int pozostawia tylko liczby znajdujace sie w innej tablicvy, np. {1234567} i {419348} => {134}


Na razie do tej pory wykombinowałem tylko trochę zadania pierwszego, ale bez takiego efektu, jaki ma wyjść. Wkleję kod, jak mam jeszcze ten plik zapisany.

PS: Nie chcę gotowców, chcę pomocy, tj. jakiej pętli (while? for?) użyć w zadaniu pierwszym, co jako zmienną zadeklarować itp. :)

Za pomoc stawiam piwo, jak ktoś nawiedzi kiedyś Wawkę, ewentualnie wyślę 5zł na konto. :E

Ten post był edytowany przez hultek dnia: 08 Luty 2012 - 15:56


#2 Użytkownik jest niedostępny   hultek Ikona

  • Addicted to music
  • PipPipPipPipPip
  • Grupa: Forumowicze
  • Postów: 5244
  • Dołączył: Pt, 23 Wrz 05

Napisany 08 Luty 2012 - 15:54

OK, mam kawałek kodu z zadania pierwszego. Powtarza tyle razy, ile trzeba, jest przerwa w odpowiednim miejscu. Brakuje tylko tego, żeby literki odejmowało.
using System;

class Pokaz_for
{

    public static void Main()
    {
        int i, b;
        for (i = 0, b = 16; i < 16; i = i + 1, b = b - 1)
        {
            Console.WriteLine("WIERSZ WEJŚCIOWY.");
            if (b == 7 )
            {
                Console.WriteLine();
                b = 1;
            }
        }
        Console.ReadKey();
    }
}


:E

Ten post był edytowany przez hultek dnia: 08 Luty 2012 - 15:58


#3 Użytkownik jest niedostępny   EF Ikona

  • :|
  • PipPipPipPipPip
  • Grupa: Forumowicze
  • Postów: 6084
  • Dołączył: Pn, 31 Maj 04

Napisany 08 Luty 2012 - 16:21

1.
string in = args[0]; // "Wiersz wejsciowy."
int x = in.Length
for(int i=0;i<in.Length;i++)
{
for(int j=0;j<x;j++)
{
Console.Write(in[i]);
}
Console.WriteLine("");
x--
}

Nie testowalem ale mniej wiecej tak to powinno wygladac.

Ten post był edytowany przez EF dnia: 08 Luty 2012 - 16:21


#4 Użytkownik jest niedostępny   hultek Ikona

  • Addicted to music
  • PipPipPipPipPip
  • Grupa: Forumowicze
  • Postów: 5244
  • Dołączył: Pt, 23 Wrz 05

Napisany 08 Luty 2012 - 16:32

W którym miejscu toto wkleić? ;x

#5 Użytkownik jest niedostępny   ..::DAN::.. Ikona

  • Uzależniony od forum
  • PipPipPipPipPip
  • Grupa: Forumowicze
  • Postów: 1343
  • Dołączył: Cz, 26 Mar 09

Napisany 08 Luty 2012 - 16:46

wwwwwwwwwwwwwwww
iiiiiiiiiiiiiii
eeeeeeeeeeeeee
rrrrrrrrrrrrr
ssssssssssss
zzzzzzzzzzz
          
wwwwwwwww
eeeeeeee
jjjjjjj
ssssss
ccccc
iiii
ooo
ww
y


dla takiego efektu.
1. deklarujesz zmienna np. n = 0;
2. deklarujesz stringa z napisem np. string napis = "wiersz wejsciowy";
3. pierwsza pętla for(int i = napis.length(); i > -1; i--)
4. druga pętla wewnątrz pierwszej for(int j = 0; j < i; j++)
wypisanie napis[n]; koniec tej petli
3. c.d. przejscie do kolejnego wiersza, n++;

jak czegoś nie rozumiesz to pisz.

#6 Użytkownik jest niedostępny   hultek Ikona

  • Addicted to music
  • PipPipPipPipPip
  • Grupa: Forumowicze
  • Postów: 5244
  • Dołączył: Pt, 23 Wrz 05

Napisany 08 Luty 2012 - 17:02

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

namespace Zadanie_1
{
    class Program
    {
        static void Main(string[] args)
        {
            int n = 0;
            string napis = "WIERSZWEJŚCIOWY.";
            for (int i = napis.length(); i > -1; i--)
            {
                for (int j = 0; j < i; j++);
                Console.WriteLine(napis[n]);
            }
        }
    }
}

Tak to ma wyglądać? Bo nie chce się kompilować, jest błąd:

Cytuj

Error 1 'string' does not contain a definition for 'length' and no extension method 'length' accepting a first argument of type 'string' could be found (are you missing a using directive or an assembly reference?) C:\Users\Robert\AppData\Local\Temporary Projects\Zadanie 1\Program.cs 14 32 Zadanie 1


#7 Użytkownik jest niedostępny   ..::DAN::.. Ikona

  • Uzależniony od forum
  • PipPipPipPipPip
  • Grupa: Forumowicze
  • Postów: 1343
  • Dołączył: Cz, 26 Mar 09

Napisany 08 Luty 2012 - 17:16

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

namespace Zadanie_1
{
    class Program
    {
	static void pokaz()
	{
            int n = 0;
            string napis = "WIERSZ WEJŚCIOWY.";
            for (int i = napis.length; i > -1; i--)
            {
                for (int j = 0; j < i; j++)
                {
			Console.WriteLine(napis[n]);
		}
		Console.WriteLine();
		n++;
            }
        }
        static void Main(string[] args)
        {
		pokaz();
	}
    }
}

sprawdz to. poprawiłem Ci, wcięcia szlak trafił...

Ten post był edytowany przez ..::DAN::.. dnia: 08 Luty 2012 - 17:24


#8 Użytkownik jest niedostępny   hultek Ikona

  • Addicted to music
  • PipPipPipPipPip
  • Grupa: Forumowicze
  • Postów: 5244
  • Dołączył: Pt, 23 Wrz 05

Napisany 08 Luty 2012 - 17:51

Po kliknięciu Debug wyskakuje mi to:

Cytuj

---------------------------
Microsoft Visual C# 2010 Express
---------------------------
Visual Studio cannot start debugging because the debug target 'C:\Users\Robert\AppData\Local\Temporary Projects\Zadanie1\bin\Debug\Zadanie1.exe' is missing. Please build the project and retry, or set the OutputPath and AssemblyName properties appropriately to point at the correct location for the target assembly.
---------------------------
OK
---------------------------
BTW: Co ten błąd oznacza? o_o

-_-

#9 Użytkownik jest niedostępny   ..::DAN::.. Ikona

  • Uzależniony od forum
  • PipPipPipPipPip
  • Grupa: Forumowicze
  • Postów: 1343
  • Dołączył: Cz, 26 Mar 09

Napisany 08 Luty 2012 - 18:05

Chcesz debugować coś czego nie ma. Najpierw zbuduj projekt, a potem uruchom.

#10 Użytkownik jest niedostępny   hultek Ikona

  • Addicted to music
  • PipPipPipPipPip
  • Grupa: Forumowicze
  • Postów: 5244
  • Dołączył: Pt, 23 Wrz 05

Napisany 08 Luty 2012 - 18:23

Nie czaję, co zrobić. Tworzę nowy projekt, wklejam ten kod i cały czas ten sam błąd. U Ciebie działa?

Wcześniej w xHTMLu i CSS pisałem, to nie miałem większych problemów, a tutaj co chwilę jakiś wałek... -_-

#11 Użytkownik jest niedostępny   ..::DAN::.. Ikona

  • Uzależniony od forum
  • PipPipPipPipPip
  • Grupa: Forumowicze
  • Postów: 1343
  • Dołączył: Cz, 26 Mar 09

Napisany 08 Luty 2012 - 18:33

Project -> build all, skrót chyba F6 potem klikaj w debug.

#12 Użytkownik jest niedostępny   hultek Ikona

  • Addicted to music
  • PipPipPipPipPip
  • Grupa: Forumowicze
  • Postów: 5244
  • Dołączył: Pt, 23 Wrz 05

Napisany 08 Luty 2012 - 18:55

Nah, dalej nie pomaga, setki razy tak robiłem. A i ten błąd wciąż wisi:

Cytuj

Error 1 'string' does not contain a definition for 'length' and no extension method 'length' accepting a first argument of type 'string' could be found (are you missing a using directive or an assembly reference?) C:\Users\Robert\AppData\Local\Temporary Projects\ConsoleApplication1\Program.cs 14 32 ConsoleApplication1
:P

OK, LOL, zmieniłem z length na Length!!! I nie ma errorów ;d

#13 Użytkownik jest niedostępny   ..::DAN::.. Ikona

  • Uzależniony od forum
  • PipPipPipPipPip
  • Grupa: Forumowicze
  • Postów: 1343
  • Dołączył: Cz, 26 Mar 09

Napisany 08 Luty 2012 - 18:57

napis.Length


Length musi być z dużej litery. Popraw i zobacz.

Sedze na Linuksie i dawno C# nie używałem.

Ten post był edytowany przez ..::DAN::.. dnia: 08 Luty 2012 - 18:58


#14 Użytkownik jest niedostępny   hultek Ikona

  • Addicted to music
  • PipPipPipPipPip
  • Grupa: Forumowicze
  • Postów: 5244
  • Dołączył: Pt, 23 Wrz 05

Napisany 08 Luty 2012 - 18:57

Ale program sam w sobie nie spełnia swoje funkcji. Wypisuje literki po kolei. :P

EDIT: @up: Nie ma problemu, i tak jestem ogromnie wdzięczny za pomoc!

To wypisuje w ten sposób:
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
I
I
I
itd...

Ten post był edytowany przez hultek dnia: 08 Luty 2012 - 19:02


#15 Użytkownik jest niedostępny   ..::DAN::.. Ikona

  • Uzależniony od forum
  • PipPipPipPipPip
  • Grupa: Forumowicze
  • Postów: 1343
  • Dołączył: Cz, 26 Mar 09

Napisany 08 Luty 2012 - 19:01

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

namespace Zadanie_1
{
    class Program
    {
	static void pokaz()
	{
            int n = 0;
            string napis = "WIERSZ WEJŚCIOWY.";
            for (int i = napis.Length; i > -1; i--)
            {
                for (int j = 0; j < i; j++)
                {
			Console.Write(napis[n]);
		}
		Console.WriteLine();
		n++;
            }
        }
        static void Main(string[] args)
        {
		pokaz();
	}
    }
}


Teraz.. Głowa mnie boli i takie oczywiste błędy robię, ze sobie powinienem siana chyba dać..

Ten post był edytowany przez ..::DAN::.. dnia: 08 Luty 2012 - 19:02


#16 Użytkownik jest niedostępny   hultek Ikona

  • Addicted to music
  • PipPipPipPipPip
  • Grupa: Forumowicze
  • Postów: 5244
  • Dołączył: Pt, 23 Wrz 05

Napisany 08 Luty 2012 - 19:04

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

namespace Zadanie_1
{
    class Program
    {
        static void pokaz()
        {
            int n = 0;
            string napis = "WIERSZ WEJŚCIOWY.";
            for (int i = napis.Length; i > -1; i--)
            {
                for (int j = 0; j < i; j++)
                {
                    Console.Write(napis[n]);
                }
                Console.WriteLine();
                n++;
            }
        }
        static void Main(string[] args)
        {
            pokaz();
            Console.ReadKey();
        }
    }
}

Dodałem sobie Console.ReadKey();, żeby się nie zamykało samo i wszystko hula!!! Przeanalizuję pod względem tego, co zmieniłeś.

A do zadania drugiego to będzie ten kodzik, tak myślę:
for (int i = 100; i <= 1000; i++)
      {
        if (i % 9 == 0 && i % 5 == 0)
          Console.WriteLine(i);
      }

Zaraz sprawdzę!



________
EDIT: Ok, ten kodzik do zadania 2 działa:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Zadanie2
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Jest to program, który prezentuje wszystkie liczby naturalne trzycyfrowe, które są podzielne przez 5 i 9:");
            for (int i = 100; i <= 1000; i++)
            {
                if (i % 9 == 0 && i % 5 == 0)
                    Console.WriteLine(i);
            }
            Console.ReadKey();
        }
    }
}

Ten post był edytowany przez hultek dnia: 08 Luty 2012 - 19:11


#17 Użytkownik jest niedostępny   tomek32td Ikona

  • Gaduła
  • PipPipPip
  • Grupa: Forumowicze
  • Postów: 105
  • Dołączył: Pn, 21 Wrz 09

Napisany 08 Luty 2012 - 19:16

Zobacz posthultek, o 08 Luty 2012 - 19:04, napisał(a):


A do zadania drugiego to będzie ten kodzik, tak myślę:
for (int i = 100; i <= 1000; i++)
      {
        if (i % 9 == 0 && i % 5 == 0)
          Console.WriteLine(i);
      }

Zaraz sprawdzę!



________
EDIT: Ok, ten kodzik do zadania 2 działa:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Zadanie2
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Jest to program, który prezentuje wszystkie liczby naturalne trzycyfrowe, które są podzielne przez 5 i 9:");
            for (int i = 100; i <= 1000; i++)
            {
                if (i % 9 == 0 && i % 5 == 0)
                    Console.WriteLine(i);
            }
            Console.ReadKey();
        }
    }
}


Myślę że nie zrozumiałeś polecenia zadania. Napisałeś program który sprawdza czy liczba jest podzielna przez 5 i 9. Wnioskując z treści program powinien sprawdzać sumę cyfr, czy jest podzielna. Np.
Liczba 359 -->Suma cyfr wynosi 3+5+9=17 i dopiero to sprawdzasz czy jest podzielne przez 5 i 9.

#18 Użytkownik jest niedostępny   ..::DAN::.. Ikona

  • Uzależniony od forum
  • PipPipPipPipPip
  • Grupa: Forumowicze
  • Postów: 1343
  • Dołączył: Cz, 26 Mar 09

Napisany 08 Luty 2012 - 19:17

Ten kod nie zadziała bo suma ich cyfr maa być przez to podzielna, a nie sama liczba.
Moj pomysł na to:
liczba przechowywana w zmiennej n. Petla while(n > 0). Zmienna pomocnicza do sumowania cyfr sumOfN = 0;
W pętli while do sumOfN dodajesz resztę z dzielenia n przez 10, a potem ja przez to dzielisz. W ten sposób dostaniesz sumę cyfr. Reszta jak masz tylko warunek końcowy pętli i < 1000 bo samo 1000 ma już 4 cyfry.

#19 Użytkownik jest niedostępny   hultek Ikona

  • Addicted to music
  • PipPipPipPipPip
  • Grupa: Forumowicze
  • Postów: 5244
  • Dołączył: Pt, 23 Wrz 05

Napisany 08 Luty 2012 - 19:20

Racja, to kombinuję na nowo.
BTW: Dan, odnośnie tego pierwszego zadania, to co tam pozmieniałeś, bo nie mogę dostrzec?

#20 Użytkownik jest niedostępny   tomek32td Ikona

  • Gaduła
  • PipPipPip
  • Grupa: Forumowicze
  • Postów: 105
  • Dołączył: Pn, 21 Wrz 09

Napisany 08 Luty 2012 - 19:22

Tylko tak naprawdę to program zawsze da wynik negatywny, dlaczego? Już tłumacze.
Najmniejsza liczba podzielna przez 5 i 9 to: 45. Zakładając najbardziej pesymistyczną wersje kiedy suma cyfr jest największa:
999 --> 9+9+9=27 a więc to i tak za mało żeby warunek był spełniony. ;)

A jeśli chodzi o rozwiązanie:
Co prawda nie znam C# ale w C++ zrobił bym to tak:
1. W pętli for przechodził przez liczby od 100 do 999.
2. Rzutowałbym na stringa liczbę i odczytywał wartości cyfr i dodawał do sumy.
3. Sprawdzał czy suma jest podzielna przez 5 i 9.
4. Jeśli podzielna wypisuje liczbę i od nowa punkt nr.1 ;)

Ten post był edytowany przez tomek32td dnia: 08 Luty 2012 - 19:31


  • (2 Stron)
  • +
  • 1
  • 2
  • Nie możesz rozpocząć nowego tematu
  • Nie możesz odpowiadać w tym temacie

1 Użytkowników czyta ten temat
0 użytkowników, 1 gości, 0 anonimowych