Pouze tento týden sleva až 80 % na e-learning týkající se PHP. A zároveň využij akce až 30 % zdarma při nákupu e-learningu. Více informací.
Hledáme asistenty pro kurzy programování - pohodová brigáda. Více info
PHP week
Avatar
Lukáš Stejskal:5. února 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. února 20:23
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
DarkCoder
Člen
Avatar
Odpovídá na Lukáš Stejskal
DarkCoder:5. února 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. února 21:46
"„Učíš-li se proto, aby sis zapamatoval, zapomeneš. Učíš-li se proto, abys porozuměl, zapamatuješ si."
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.