IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: objem a povrch koule a kvadru

V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Lukáš Stejskal:5.2.2021 20:23

Ahoj, za úkol jsme dostali výpočet objemu a povrchu koule a kvádru pomocí ukazatelů.
Chtěl jsem se zeptat zda mi to nešlo úpravou následujícího programu pro výpočet kvadratické rovnice

Hlavní soubor

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

int main(int argc, char *argv[]) {
        int a,b,c,Diskr;
        nactiA(&a);

        if(a == 0){
                printf("a = 0, NELZE!!!",a);
        }
        else{
            nactiBC(&b,&c);
                Diskr = Diskrim(a,b,c);
                printf("Diskriminant je %d\n",Diskr);
                if(Diskr > 0){
                        printf("Koren je %.3lf\n",Re(a,b)+Im(a,Diskr));
                        printf("Koren je %.3lf\n",Re(a,b)-Im(a,Diskr));
                }
                else if(Diskr == 0){
                        printf("Koren je %.3lf\n",Re(a,b));
                }
                else{//else if(Diskr < 0)
                        printf("Koren je %.3lf + %.3lfi\n",Re(a,b),Im(a,Diskr));
                        printf("Koren je %.3lf - %.3lfi\n",Re(a,b),Im(a,Diskr));
                }
        }
        return 0;
}

projekt kvadrat.c

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

//ax2 + bx + c=0   a != 0
//D = b2-4ac

void nactiA(int *x)
{
        printf("Zadej a: ");
        scanf("%d",x);
}

void nactiBC(int *x, int *y)
{
        printf("Zadej B a C\n");
        scanf("%d%d",x,y);
}

int Diskrim(int x, int y, int z)//x->a,y->b,z->c
{
        return (y*y)-(4*x*z);
}

double Re(int x,int y)//x->a, y->b
{
        return (double)(-y)/(2.0*x);
}

double Im(int x, int y)//x->a,y->Diskriminant
{
        return (double)(sqrt(fabs(y)))/(2.0*x);

projekt kvadrat.h

#ifndef KVADRAT_H
#define KVADRAT_H

void nactiA(int *x);
void nactiBC(int *x, int *y);
int Diskrim(int x, int y, int z);
double Re(int x,int y);
double Im(int x, int y);

#endif

Zkusil jsem: Když jsem to zkoušel tak na to nemohu stále přijít

Chci docílit: Výpočet objemu a povrchu koule a kvádru pomocí ukazatelů

Děkuji všem za odpověď

Lukáš

 
Odpovědět
5.2.2021 20:23
Avatar
DarkCoder
Člen
Avatar
Odpovídá na Lukáš Stejskal
DarkCoder:5.2.2021 21:46

Z programu, který uvádíš, si toho po obsahové stránce moc nevezmeš. Přesto obsahuje dost na to (jeden z důvodů použití ukazatelů), aby si mohl vyřešit domácí úlohu.

Zodpověz si tedy nejprve otázku, jaký je smysl ukazatelů a jaké jsou výhody a možnosti oproti programu, který je nevyužívá.

Naznačím. Vrácení vícero hodnot z funkce..

Nahoru Odpovědět
5.2.2021 21:46
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.