request for member in something

0

Mam problem z tym programem:

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

char line[100];
double kp;			/* kapital poczatkowy */
double p;			/* oprocentowanie w skali roku */
int okres;			/* okres na jaki oddana zostala kwota pieniedzy */
double zysk1;			/* zysk z samych kapitalizacji miesięcznych */
double zysk2;			/* zysk z kapitalizacji kwartalnych */
double zysk3;			/* zysk z kapitalizacji corocznych */
int wybor;


int main()
{

	printf("Wprowadz kapital poczatkowy: \n");
	fgets(line, sizeof(line), stdin);
	sscanf(line, "%lf", &kp);

	printf("Wprowadz oprocentowanie: \n");
	fgets(line, sizeof(line), stdin);
	sscanf(line, "%lf", &p);

	printf("Wpisz ilosc lat: \n");
	fgets(line, sizeof(line), stdin);
	sscanf(line, "%d", &okres);
	
		
	
	printf("Wybierz rodzaj kapitalizacji: \n");
	printf("1. Kapitalizacja miesieczna. \n");
	printf("2. Kapitalizacja kwartalna. \n");
	printf("3. Kapitalizacja roczna. \n");


zysk1 = pow( (1.0 + (10.0 / 1200.0)), (12.0 * okres));

zysk2 = pow( (1.0 + (10.0 / 400.0)), (4.0 * okres));

zysk3 = pow( (1.0 + (10.0 / 100.0)), (okres));


	scanf("%d", &wybor);
		switch (wybor) {
			case 1: printf("Wybrano kapitalizacje miesieczna. \n");
				printf("Zysk po %d latach wyniesie %lf. \n", okres, zysk1); 
				printf("Suma pieniedzy na koncie po %d latach to %lf. \n", okres, (zysk1 + kp));  
			break;
			case 2: printf("Wybrano kapitalizacje kwartalna. \n");
				printf("Zysk po %d latach wyniesie %lf. \n", okres, zysk2);
				printf("Suma pieniedzy na koncie po %d latach to %lf. \n", okres, (zysk2 + kp));
			break;
			case 3:	printf("Wybrano kapitalizacje coroczna. \n");
				printf("Zysk po %d latach wyniesie %lf. \n", okres, zysk3);
				printf("Suma pieniedzy na koncie po %d latach to %lf. \n". okres, (zysk3 + kp));
			break;
		}
	

return (0);
}

Otóż, jedyny błąd jaki wyskakuje w terminalu to request for member ‘okres’ in something not a structure or union
Co należy z tym zrobić?

0

masz literówkę w kodzie, przed okres masz kropkę, zamiast przecinka, powinno być:

printf("Suma pieniedzy na koncie po %d latach to %lf. \n", okres, (zysk3 + kp));

a masz

printf("Suma pieniedzy na koncie po %d latach to %lf. \n". okres, (zysk3 + kp));

więc dla tego kompilator oczekuje struktury lub unii

0

Tym razem pojawia się coś takiego:

/tmp/ccOsaEQt.o: In function main': odsetki.c:(.text+0x12b): undefined reference to pow'
odsetki.c:(.text+0x158): undefined reference to pow' odsetki.c:(.text+0x17d): undefined reference to pow'
collect2: error: ld returned 1 exit status

0

Jakiego IDE używasz? Dodaj do argumentów kompilatora przełącznik -lm

0

Używam gedita i terminala. gcc -lm tak? Niestety pojawia się to samo.

0

Napisz własnego pow:
double pow(double x,double e) { return exp(e*log(x)); }
ciekawe czy zacznie czepiać się exp i log :D

0

a czy u kogoś działa ten program?

0

Bez problemu kompiluje mi się w Visual Studio 2012

0

Co z tym można zrobić? Czy skoro ten program nie chce działać na ubuntu, to nie zadziała również na innych wersjach linuxa?

0

Działa!!
Wpisałem coś takiego:

$ gcc -o myFile myFile.c -lm

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