• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Tablice w C, implementacja

Object Storage Arubacloud
0 głosów
453 wizyt
pytanie zadane 2 grudnia 2016 w C i C++ przez Jan Kowalski Nowicjusz (150 p.)

Cześć witam serdecznie.

Mam pytanie odnośnie tablic w C. Mam napisany program, lecz potrzebuję zaimplementować tablice.

Treść zadania:

Program obliczający [pole | obwód] [kwadratu | prostokąta | koła]. (pi = 3.14) Dane figury mają być przechowywane w tablicy 'figura', a wynik w tablicy 'wynik'. Dane figury wpisywane są z klawiatury w trakcie działania programu.

 

Napisałem program bez tablic. Z technicznych rzeczy, to źle oblicza obwód prostokąta, oraz przy wyborze opcji powtarza się pętla. Proszę o wskazówki.


#include <stdio.h>
#include <stdlib.h>
#include <math.h>

    float obw_kwadrat(float x)
    {
        return 4*x;
    }
    float pole_kwadrat(float x)
    {
        return pow(x,2);
    }
    float obw_prostokat(float x, float y)
    {
        return x+x+y+y;
    }
    float pole_prostokat(float x,float y)
    {
        return x*y;
    }
    float pole_kolo(float r)
    {
        return M_PI*r;
    }
float obw_kolo(float r)
    {
        return 2*M_PI*r;
    }
int main(void)
{
    float wynik;
    float a,b,r;
    char wybor;
    while (1){
        fflush(stdout);
        printf("Wybierz operację: \n 1. Obwód kwadratu\n 2. Pole kwadratu\n 3. Obwód prostokata\n 4. Pole prostokata\n 5. Pole koła\n 6. Obwód koła\n");
        getc(stdin);
        scanf("%c", &wybor);

    switch(wybor){
    case '1':
    {
        printf("Obwód kwadratu. Podaj wartość a: ");
        scanf("%f", &a);

        wynik = obw_kwadrat(a);
        printf("Wynik: %f\n", wynik);
        break;
    }
      case '2':
    {
        printf("Pole kwadratu. Podaj wartość a: ");
        scanf("%f", &a);

        wynik = pole_kwadrat(a);
        printf("Wynik: %f", wynik);
        break;
    }
      case '3':
    {
        printf("Obwód prostokąta. Podaj wartość a,b: ");
        scanf("%f", &a);
        scanf("%f", &b);
        wynik = pole_prostokat(a,b);
        printf("Wynik: %f", wynik);
        break;
    }
      case '4':
    {
        printf("Pole prostokąta. Podaj wartość a,b: ");
        scanf("%f", &a);
        scanf("%f", &b);
        wynik = pole_prostokat(a,b);
        printf("Wynik: %f", wynik);
        break;
    }
      case '5':
    {
        printf("Obwód koła. Podaj wartość r: ");
        scanf("%f", &r);

        wynik = obw_kolo(r);
        printf("Wynik: %f", wynik);
        break;
    }
      case '6':
    {
        printf("Pole koła. Podaj wartość r: ");
        scanf("%f", &r);

        wynik = pole_kolo(r);
        printf("Wynik: %f", wynik);
        break;
    }
    default:
        {
            printf("błąd");
        }
    }

    }
    return 0;
}

 

1 odpowiedź

0 głosów
odpowiedź 2 grudnia 2016 przez Przemek Gaduła (3,600 p.)
wybrane 2 grudnia 2016 przez Jan Kowalski
 
Najlepsza
Zobacz co liczysz kiedy chcesz obliczyć obwód i sprawdź czy na pewno pole koła jest dobrze liczone
komentarz 2 grudnia 2016 przez Jan Kowalski Nowicjusz (150 p.)
Rzeczywiście pomyliłem,  r do kwadratu.

Jednak nadal nie wiem jak zrobić tablice
komentarz 2 grudnia 2016 przez Przemek Gaduła (3,600 p.)

Nie wiem po co tutaj dodawać tablice, ale jeśli już to:

float tablica[rozmiar];

tworzysz tablice wynik i figura

tablica[0] = wartosc;

przypisujesz jakieś wartości do poszczególnych komórek (możesz użyć do tego pętli)

I potem robisz jakieś operacje na tak jak na zwykłych zmiennych np.:

tablica[0] + tablica[1]

 

komentarz 2 grudnia 2016 przez Jan Kowalski Nowicjusz (150 p.)

Czyli


char figura[3];

figura[0] = "kwadrat";
figura[1] = "koło";

figura[2] = "prostokąt";

float wyniki[100];

wyniki[0] = obw_kwadrat();  

itd itd ?

 

komentarz 2 grudnia 2016 przez Przemek Gaduła (3,600 p.)

Nie pamiętam dokładnie jak się robiło w C stringi, ale chyba jakoś tak:

char name[] = "Hello";

czyli jak będziesz chciał tablicę łańcuchów to piszesz

const char *figura[3];
    figura[0] = "Kwadrat";
    figura[1] = "Prostokat";
    figura[2] = "Kolo";
    printf("%s\n", figura[2]);

Tablice wyniki masz ok, ale wydaje mi się, że chodzi raczej o coś takiego

float Kwadrat[1];
    float Prostokat[2];
    float Kolo[1];
    
    Kwadrat[0] = 1;
    //itd
    
    float wyniki[3];
    wyniki[0] = ObliczPoleKwadratu(Kwadrat[0]);
    wyniki[1] = ObliczPoleProstokatu(Prostokat[0], Prostokat[1]);
    wyniki[2] = ObliczPoleKolo(Kolo[0]);

 

Jak mówiłem wcześniej używanie tablic w tym zadaniu wydaje mi się trochę niepotrzebne, ale chyba chodzi o to żeby mieć tablice gdzie przechowujesz dane figury (bok itp), a nie sama nazwę figury.

komentarz 2 grudnia 2016 przez Jan Kowalski Nowicjusz (150 p.)
ok, dzięki, wynika z treści z zadania więc chciałem sobie to zrobić.

Poszukam normalnych zadań

Podobne pytania

0 głosów
1 odpowiedź 2,833 wizyt
pytanie zadane 11 listopada 2016 w C i C++ przez Wiciorny Ekspert (270,910 p.)
+1 głos
1 odpowiedź 2,138 wizyt
0 głosów
1 odpowiedź 209 wizyt
pytanie zadane 1 grudnia 2022 w C i C++ przez Pysa6 Nowicjusz (220 p.)

92,632 zapytań

141,500 odpowiedzi

319,879 komentarzy

62,013 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...