Otóż mam program, który wygląda w ten sposób:
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <stdlib.h>
//Typ strukturalny piramidy
typedef struct
{
int KLOCEK_a, KLOCEK_h, KLOCEK_m, KLOCEK_v;
int PIRAMIDA_KLOCKI_a, PIRAMIDA_a, PIRAMIDA_KLOCKI_h, PIRAMIDA_h, PIRAMIDA_KLOCKI_n, PIRAMIDA_m, PIRAMIDA_v;
int NIEWOLNICY, CZAS;
} s_piramida;
//Typ strukturalny poziomu piramidy
typedef struct
{
int wysNPM, ilKLOCKOW, objPOZIOM, mPOZIOM;
} s_poziom;
//Funkcja rekurencyjna licząca ilość bloków w piramidzie
int iloscKLOCKOW(int H)
{
int ilKLOCKOW;
if(H == 1) return 1;
ilKLOCKOW = (H*H) + iloscKLOCKOW(H-1);
return ilKLOCKOW;
}
//Funkcja obliczająca wielkości piramidy
s_piramida piramida_oblicz(s_piramida POBRANE)
{
s_piramida PIRAMIDA;
PIRAMIDA.KLOCEK_a = POBRANE.KLOCEK_a;
PIRAMIDA.KLOCEK_h = POBRANE.KLOCEK_h;
PIRAMIDA.KLOCEK_m = POBRANE.KLOCEK_m;
PIRAMIDA.KLOCEK_v = POBRANE.KLOCEK_a*POBRANE.KLOCEK_a*POBRANE.KLOCEK_h;
PIRAMIDA.NIEWOLNICY = POBRANE.NIEWOLNICY;
PIRAMIDA.PIRAMIDA_KLOCKI_a = POBRANE.PIRAMIDA_KLOCKI_h;
PIRAMIDA.PIRAMIDA_KLOCKI_h = POBRANE.PIRAMIDA_KLOCKI_h;
PIRAMIDA.PIRAMIDA_a = POBRANE.PIRAMIDA_KLOCKI_h*POBRANE.KLOCEK_a;
PIRAMIDA.PIRAMIDA_h = POBRANE.PIRAMIDA_KLOCKI_h*POBRANE.KLOCEK_h;
PIRAMIDA.PIRAMIDA_KLOCKI_n = iloscKLOCKOW(POBRANE.PIRAMIDA_KLOCKI_h);
PIRAMIDA.PIRAMIDA_m = PIRAMIDA.PIRAMIDA_KLOCKI_n*POBRANE.KLOCEK_m;
PIRAMIDA.PIRAMIDA_v = PIRAMIDA.PIRAMIDA_KLOCKI_n*PIRAMIDA.KLOCEK_v;
PIRAMIDA.CZAS = (PIRAMIDA.PIRAMIDA_KLOCKI_n/(PIRAMIDA.NIEWOLNICY/10))*3;
if(PIRAMIDA.CZAS < 1)
{
PIRAMIDA.CZAS = 1;
}
return PIRAMIDA;
}
//Funkcja obliczająca wielkości poziomu priamidy
s_poziom poziom_oblicz(int H, int H2, s_piramida POBRANE)
{
s_poziom POZIOM;
POZIOM.wysNPM = POBRANE.KLOCEK_h * H;
POZIOM.ilKLOCKOW = H2 * H2;
POZIOM.mPOZIOM = POZIOM.ilKLOCKOW * POBRANE.KLOCEK_m;
POZIOM.objPOZIOM = POZIOM.ilKLOCKOW * POBRANE.KLOCEK_v;
return POZIOM;
}
//Funkcja pobierająca dane odnosnie piramidy
s_piramida pobierz()
{
s_piramida POBIERANIE;
printf("Podaj parametry pojedynczego bloku skalnego:\n");
printf("Szerokosc(w m): ");
scanf("%i", &POBIERANIE.KLOCEK_a);
printf("Wysokosc(w m): ");
scanf("%i", &POBIERANIE.KLOCEK_h);
printf("Mase(w kg): ");
scanf("%i", &POBIERANIE.KLOCEK_m);
printf("Podaj parapmetry piramidy:\n");
printf("Ilosc pieter: ");
scanf("%i", &POBIERANIE.PIRAMIDA_KLOCKI_h);
printf("Ilosc niewolnikow pracujacych przy budowie: ");
scanf("%i", &POBIERANIE.NIEWOLNICY);
fflush(stdin);
return POBIERANIE;
}
//Funkcja zapisująca dane do pliku
void zapis(s_piramida PIRAMIDA)
{
}
//Funkcja odpowiadająca za główną częśc programu
void piramida()
{
char Faraon[100];
printf("Podaj imie Faraona: ");
scanf("%s", Faraon);
s_piramida POBRANE = pobierz();
s_piramida PIRAMIDA = piramida_oblicz(POBRANE);
printf("||WYPISYWANIE DANYCH ODNOSNIE PIRAMIDY||\n");
printf("Dane piramidy:\nNazwa: Piramida %sa\nIlosc blokow skalnych uzytych do jej budowy: %i\nWysokosc: %im\nWymiar podstawy: %imx%im\nObjetosc: %im^3\nCiezar: %ikg\nNiewolnicy ktorzy przy niej pracowali: %i\nCzas powstawania: %i dni\n\n", Faraon, PIRAMIDA.PIRAMIDA_KLOCKI_n, PIRAMIDA.PIRAMIDA_h, PIRAMIDA.PIRAMIDA_a, PIRAMIDA.PIRAMIDA_a, PIRAMIDA.PIRAMIDA_v, PIRAMIDA.PIRAMIDA_m, PIRAMIDA.NIEWOLNICY, PIRAMIDA.CZAS);
int H = PIRAMIDA.PIRAMIDA_KLOCKI_h;
s_poziom *POZIOM;
POZIOM = (s_poziom*)malloc(sizeof(s_poziom)*H);
int i;
int j = H;
for(i=0;i<H;i++)
{
POZIOM[i] = poziom_oblicz(i+1, j, PIRAMIDA);
j--;
}
for(i=0;i<H;i++)
{
printf("||WYPISYWANIE DANYCH ODNOSNIE POZIOMU %i PIRAMIDY||\n", i+1);
printf("Wysokosc nad poziomem moza na ktorej znajduje sie poziom: %i\n", i, POZIOM[i].wysNPM);
printf("Ilosc klockow z ktorych zbodowany jest poziom: %i\n", i, POZIOM[i].ilKLOCKOW);
printf("Objetosc poziomu: %i\n", i, POZIOM[i].objPOZIOM);
printf("Waga poziomu: %i\n\n", i, POZIOM[i].mPOZIOM);
}
free(POZIOM);
zapis(PIRAMIDA);
}
int main()
{
piramida();
system("PAUSE");
return 0;
}
Chodzi o to, że funkcja for która ma mi przypisać dane poziomu do tablicy nie działa. No i w tym tkwi mój problem. Proszę pomóżcie.