Reklama
Pokazuje wyniki od 1 do 13 z 13

Temat: Proste zadania z c

  1. #1
    Avatar Taidio
    Data rejestracji
    2009
    Położenie
    Sayonara
    Wiek
    29
    Posty
    21,021
    Siła reputacji
    29

    Domyślny Proste zadania z c

    Cześć, otóż mam na studiach podstawy informatyki i ostatnio na wykładzie mieliśmy początki z języka c na które niestety nie wstałem, na ćwiczeniach kolejnego dnia mieliśmy zrobić 9 zadań(4 obowiązkowe) i wysłać je do piątku tj. jutra. 2 z nich zrobiłem i mi działają, a z dwoma mam problem bo z programowania jestem noga, ściągnę jakiś kurs żeby się podszkolić, w końcu pasuje dobrze ten przedmiot zaliczyć, jednak na jutro mam jeszcze sporo ciężkich zadań z rzeczy bliższych mojemu kierunkowi i tu się pojawia moja prośba, czy moglibyście zweryfikować i poprawić co jest źle w tych zadaniach? Poniżej wstawiam treść i to co mam, do zrobienia tych programów mieliśmy używać funkcji printf i scanf.

    zad 1.
    Napisz program wyliczający ile minut (średnio) masz na wykonanie każdego z zadań zakładając, że pozostało 75 minut zajęć. Zadanie należy wykonać w dwóch wariantach: na liczbach rzeczywistych i liczbach całkowitych. Z czego wynika ewentualna różnica w uzyskanym wyniku?

    Kod:
    #include<stdio.h>
    main()
    {
    float czas=75, zadania=9;
    float szukana;
    szukana=czas/zadania;
    printf( "ilosc minut %d ilosc zadan %d czas na zadanie %f \n",czas, zadania, szukana);
    }

    i drugie
    Napisz program zamieniający miejscami wartości zmiennych całkowitych x oraz y wczytanych z klawiatury. Należy wczytać liczby, wyświetlić je, zamienić wartości i wyswietlić ponownie

    Kod:
    #include<stdio.h>
    main()
     {
      int x;
      int y;
      printf("podaj x=\n");
      scanf("%i", %x);
      printf("podaj y=\n");
      scanf("%i", &y);
      printf("x=%i \n y=&i",x,y);
      int x1;
      x=x1;
      int y1;
      y=y1;
    
      printf("x=&i \n y=%i \n",x,y);
      
      }
    Jeśli znacie jakieś kursy które w prosty i efektywny sposób zwiększą moją wiedzę na temat c, to bardzo poprosiłbym o linki

    używaj tagów CODE! - celestian
    Ostatnio zmieniony przez Celestian hunter : 17-10-2013, 15:38

  2. #2
    Avatar bercik
    Data rejestracji
    2005
    Położenie
    Rojca
    Wiek
    35
    Posty
    406
    Siła reputacji
    20

    Domyślny

    Napisz program wyliczający ile minut (średnio) masz na wykonanie każdego z zadań zakładając, że pozostało 75 minut zajęć. Zadanie należy wykonać w dwóch wariantach: na liczbach rzeczywistych i liczbach całkowitych. Z czego wynika ewentualna różnica w uzyskanym wyniku?
    Liczysz tylko czas w liczbach rzeczywistych, tutaj pełny program:
    Kod:
    #include<stdio.h>
    #include<conio.h>
    
    int main()
    {
    	int time = 75;
    	int tasks = 9;
    	int integer = time / tasks;
    	float real = (float)time / (float)tasks;
    	
    	printf("Czas w liczbach calkowitych: %d, w rzeczywistych: %f.", integer, real);
    	//roznica wynika z obcinania wartosci po przecinku w liczbach calkowitych
    
    	_getch();
    	
    	return 0;
    }
    Napisz program zamieniający miejscami wartości zmiennych całkowitych x oraz y wczytanych z klawiatury. Należy wczytać liczby, wyświetlić je, zamienić wartości i wyswietlić ponownie
    Tutaj powinienes zamienic warunki:
    Kod:
    int x1;
      x=x1;
      int y1;
      y=y1;
    na
    Kod:
    int x1;
    x1 = y;
    int y1;
    y1 = x;
    x = x1;
    y = y1;
    Ale można to też zrobić dużo prościej:
    Kod:
    #include<stdio.h>
    #include<conio.h>
    
    int main()
    {
    	int x, y;
    	printf("Podaj X:");
    	scanf("%d", &x);
    	printf("Podaj y:");
    	scanf("%d", &y);
    
    	printf("Przed zmiana: x = %d, y = %d\n", x, y);
    
    	x = x + y;
    	y = x - y;
    	x = x - y;
    	
    	printf("Po zmianie: x = %d, y = %d\n", x, y);
    	
    	_getch();
    	
    	return 0;
    }
    @down
    No wiadomo, ale nie jest nigdzie powiedziane do ilu to ma działać, więc przeważnie przyjmowany jest int jako jednostka.
    U Ciebie również gdy podamy liczbę większą niż 5 000 000 000 to program się wysypie, więc można by użyć long long int, ale to jest bez sensu bo raczej nigdy się takich wartości nie uzyska :)
    Ostatnio zmieniony przez bercik : 17-10-2013, 16:03

  3. Reklama
  4. #3
    Avatar Bazan
    Data rejestracji
    2008
    Wiek
    31
    Posty
    1,909
    Siła reputacji
    18

    Domyślny

    Bercik, podajac duze liczby ten program sie wysypie bo wyjdziesz poza zakres inta.

    2.
    Kod:
    
    #include<stdio.h>
    #include<conio.h>
    
    int main()
    {
    	int x, y, h;
    	printf("Podaj X:");
    	scanf("%d", &x);
    	printf("Podaj y:");
    	scanf("%d", &y);
    
    	printf("Przed zmiana: x = %d, y = %d\n", x, y);
            
            h=x;
            x = y;
            y = h;
    	
    	printf("Po zmianie: x = %d, y = %d\n", x, y);
    	
    	_getch();
    	
    	return 0;
    }
    1.

    Kod:
    #include <stdio.h>
    #include <stdlib.h>
    
    int main(int argc, char *argv[])
    {
        float czas=75;
        float zadania=9;
        float szukana;
        szukana=czas/zadania;
        printf( "ilosc minut %f ilosc zadan %f czas na zadanie %f \n",czas, zadania, szukana);
        
        int c=75, z=9;
        int s;
        
        s = c/z;
        printf("Ilosc minut %d ilosc zadan %d czas na zadanie %d \n",c,z,s);
    
      system("PAUSE");	
      return 0;
    
    }

    Roznica wynika z tego, ze przy dzieleniu do inta obcinana jest czesc ulamkowa. Dlatego zamiast 8.3333 jest tylko 8.
    Dreaming by drumming. ˆˆ™

  5. #4
    Avatar Taidio
    Data rejestracji
    2009
    Położenie
    Sayonara
    Wiek
    29
    Posty
    21,021
    Siła reputacji
    29

    Domyślny

    Żeby skompilowac program musze miec linuxa? Bo u nas w szkole na nim pracujemy

  6. #5
    Avatar MasterMappi
    Data rejestracji
    2005
    Położenie
    Poznan
    Wiek
    34
    Posty
    1,480
    Siła reputacji
    19

    Domyślny

    nie, musisz miec kompilator pod twoj system operacyjny, czyli zapewne windowsa
    visual, code blocks czy nadal dla banalny programow maly i banalny w obsludze dev
    tylko bog moze nas sadzic / yolo / hwdp / acab

  7. #6
    Avatar Celestian hunter
    Data rejestracji
    2006
    Położenie
    Gliwice
    Wiek
    32
    Posty
    1,059
    Siła reputacji
    19

    Domyślny

    Choć są drobne różnice przy używaniu C na obu systemach - kiedyś się o to tutaj pytałem.

  8. #7
    Avatar Kusterek
    Data rejestracji
    2013
    Położenie
    Warszawa
    Wiek
    31
    Posty
    1,710
    Siła reputacji
    13

    Domyślny

    Cytuj bercik napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    Kod:
    x = x + y;
    y = x - y;
    x = x - y;
    co Ty tu kodzisz ? :D

    pierwszy raz widzę taki sposób, jestem zszokowany, że działa ale jeżeli by sie czepiać szczegółów to nie jest to "zamiana wartosci", owszem efekt dobry ale algorytm bledny.
    Tak samo jak moja babka od Projektu Indywidualnego, jeżeli napotkaliśmy problem zbędnych napisów na wykresie i trzeba było te napisy usunac, to ona kazała nam zmienic kolor tekstu na biały :D
    Nie polecam takiego stylu programowania.

  9. #8
    Avatar bercik
    Data rejestracji
    2005
    Położenie
    Rojca
    Wiek
    35
    Posty
    406
    Siła reputacji
    20

    Domyślny

    To jest sposób zamiany wartości dwóch zmiennych bez niepotrzebnego tworzenia trzeciej zmiennej, optymalizacja ;)
    Wiadomo, można użyć zmiennej pomocniczej, dzięki której jest to bardziej czytelne:
    Kod:
    int x, y, pom;
    x = 5;
    y = 10;
    
    pom = x;
    x = y;
    y = pom;
    no ale wtedy tworzymy trzecią zmienną, która jest tu tak na prawdę nie potrzebna i tylko zajmuje miejsce :)
    Ostatnio zmieniony przez bercik : 17-10-2013, 20:30

  10. #9
    Avatar Absherr
    Data rejestracji
    2008
    Położenie
    Kraków
    Posty
    578
    Siła reputacji
    16

    Domyślny

    Ciekawe w sumie co robi z tym kompilator w trakcie optymalizacji.

  11. #10
    Avatar Bazan
    Data rejestracji
    2008
    Wiek
    31
    Posty
    1,909
    Siła reputacji
    18

    Domyślny

    Tak? Masz 2 liczby 2145483647 i 122342354. Zamien je twoim sposobem. Dziekuje za taka optymalizacje.
    Dreaming by drumming. ˆˆ™

  12. #11

    Data rejestracji
    2010
    Posty
    2,657
    Siła reputacji
    16

    Domyślny

    Cytuj MasterMappi napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    nie, musisz miec kompilator pod twoj system operacyjny, czyli zapewne windowsa
    visual, code blocks czy nadal dla banalny programow maly i banalny w obsludze dev
    Code blocks nie jest kompilatorem xD
    MinGW jest. ;)

    @Edit
    A raczej MinGW też nie jest tylko GCC xD

  13. #12
    Avatar LGTK
    Data rejestracji
    2009
    Położenie
    Podlaskie, Białystok
    Wiek
    32
    Posty
    267
    Siła reputacji
    15

    Domyślny

    Można bawić się jeszcze xorami jednak w std mamy swap pisany tak
    Kod:
    template <class T> void swap (T& a, T& b)
    {
      T c(std::move(a)); a=std::move(b); b=std::move(c);
    }
    Więc na moje najbardziej optymalnie w C będzie to wyglądać tak
    Kod:
    int tmp;
    int val1 = 10;
    int val2 = 2;
    tmp = val1;
    val1 = val2;
    val2 = tmp;
    Co do xora: /z wiki/
    Kod:
     void xorSwap (int *x, int *y) {
         if (x != y) {
             *x ^= *y;
             *y ^= *x;
             *x ^= *y;
         }
     }
    @EDIT: I W ZASADZIE NIE WIEM O CO TEN WASZ BÓL JAJEC TO SĄ POJEDYNCZE OPERACJE WIĘC MEGA OPTYMALIZACJA NIE JEST POTRZEBANA
    Ostatnio zmieniony przez LGTK : 17-10-2013, 23:46
    PIŻMAG

  14. #13
    Avatar Gray
    Data rejestracji
    2007
    Położenie
    Gdańsk
    Posty
    2,847
    Siła reputacji
    18

    Domyślny

    Xor swapa można fajnie zrobić w 1 linijce ;d

    Kod:
    x ^= y ^= x ^= y;

Reklama

Informacje o temacie

Użytkownicy przeglądający temat

Aktualnie 1 użytkowników przegląda ten temat. (0 użytkowników i 1 gości)

Podobne tematy

  1. proste pozycjonowanie diva obok diva
    Przez Sentiniel w dziale Programowanie
    Odpowiedzi: 1
    Ostatni post: 29-08-2014, 15:49
  2. [C++] Proste operacje na stringach
    Przez Jaziq w dziale Programowanie
    Odpowiedzi: 4
    Ostatni post: 09-11-2013, 17:12
  3. Proste i szybkie zdjęcie simlocka
    Przez Bigi w dziale Urządzenia mobilne
    Odpowiedzi: 0
    Ostatni post: 24-09-2013, 23:02
  4. Dwa proste programy w C#
    Przez Mari w dziale Szkoła i nauka
    Odpowiedzi: 3
    Ostatni post: 16-12-2012, 00:31
  5. Proste, szybkie i przyjemne gry
    Przez Pekezu w dziale Inne gry
    Odpowiedzi: 25
    Ostatni post: 19-08-2012, 15:13

Zakładki

Zakładki

Zasady postowania

  • Nie możesz pisać nowych tematów
  • Nie możesz pisać postów
  • Nie możesz używać załączników
  • Nie możesz edytować swoich postów
  •