Podział kodu na funkcje z parametrami – jak to zrobić?

2018-10-28 21:56
0

Każdy program należy napisać z podziałem na funkcje z parametrami!

  1. Napisz program, który będzie znajdował największą spośród trzech podanych przez użytkownika
    liczby całkowitych.
  2. Napisz funkcję wyświetlającą na ekranie nazwę dnia tygodnia, którego numer podano przez parametr.

Jak napisać te programy z użyciem funkcji?
Pierwsze napisałem w ten sposób ale nie wiem czy to dobrze.

#include <stdio.h>
#include <stdlib.h>
int najwiekszaliczba(int, int, int);
int main()
{
    int a, b, c, max;
    printf("podaj 3 liczby calkowite!\n");
        scanf("%d%d%d" ,&a, &b, &c);
       max = najwiekszaliczba(a, b, c);
        printf("najwieksza liczba jest %d", max);
        return 0;
}
 int najwiekszaliczba(int a, int b,int c)
 {
      if(a>b&&a>c)
 {
    return a;
    }

  else if(b>c)
 {

     return b;
     }
   else
  {
     return c;
  }
}
edytowany 3x, ostatnio: furious programming, 2018-10-28 23:11

Pozostało 580 znaków

2018-10-28 23:02
1

a co jeśli b > c i b < a ? , warunek drugi. A jakie warunki musza być spełnione żeby zaszedł trzeci, bo prawie wszystko się pod niego teraz łapie? Lub a= b = c? Sugeruje sprawdzić warunki brzegowe bo będzie się sypać na potęgę albo będą bzdury wychodzić. Lepiej będzie podać pełne warunki. Przy tej liczbie argumentów to jeszcze nie problem.

Pozostało 580 znaków

2018-10-29 16:55
0

Specjalistą nie jestem, ale jeśli chodzi o zadanie pierwsze polecałbym jakiś bardziej rozszerzalny kod.

Co jeśli w poleceniu byłoby: podaj 15 liczb? Ciężko zrobić taką drabinkę ifów. Tutaj kod:

#include <iostream>

int largest_num(int arr[], size_t arr_size)
{
    int largest = arr[0];
    for (int i = 1; i < arr_size; i++)
        if (largest < arr[i])
            largest = arr[i];

    return largest;
}

int main()
{
    int n = 0;
    std::cout << "Ile liczb chcesz podac?\n";
    std::cin >> n;
    int MyArray[n];

    std::cout << "Podaj te liczby:\n";
    for (int i = 0; i < n; i++)
        std::cin >> MyArray[i];

    std::cout << "Najwieksza liczba to " << largest_num(MyArray, n);
    return 0;
}

Ah, sorry. Dopiero teraz zobaczyłem, że ma być w C. Ale przerobienie, a co najważniejsze zrozumienie jak to działa to chyba nie kłopot. :)

edytowany 1x, ostatnio: Hodor, 2018-10-29 16:57

Pozostało 580 znaków

2018-10-29 19:03
0

Można zrobić coś takiego:

#include<stdio.h>

int max(int a, int b, int c)
{
    return a < b ? (b < c ? c : b) : a;
}

const char *day_of_week(int number)
{
    const char *days[] = { "Pn", "Wt", "Sr", "Czw", "Pt", "So", "Nd" };
    return number > 0 && number < 8 ? days[number -1] : "";
}

int main()
{
    printf("Max: %d\n", max(1,3,4));

    for(int i = 1; i < 8; ++i)
    {
        printf("Dzien nr %d: %s\n", i, day_of_week(i));
    }
    return 0;
}

https://ideone.com/3DSV4G

edytowany 1x, ostatnio: grzesiek51114, 2018-10-29 19:10

Pozostało 580 znaków

Liczba odpowiedzi na stronę

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