Vercevales Temat założony przez niniejszego użytkownika |
Tabele, pętle, warunki. Pomocy! » 2011-01-31 16:03:38 Od kilkunastu godzin siedzę nad pewnym zadaniem, które pojawiło się na maturze rok temu. Nie mogę dojść do końca. Oto zadanie: http://img201.imageshack.us/img201/8637/201102091839231024x768s.png Jako, że nie umiem jeszcze bawić się plikami tekstowymi postanowiłem stworzyć program- kalkulator do zadania 5. Zacząłem od podpunktu a) Ułożenie funkcji, które obliczają cenę w zależności od ilości sztuk oraz firmy nie stanowiły problemu. Zapisanie do tablicy ilości, które bardziej się opłacają u producenta A, też nie stanowiło problemu. Nie mogę jednak dojść do tego jak rozdzielić poszczególne przedziały na odrębne wiersze tabeli. Udało mi się jedynie wymęczyć pozbycie się "Segmentation fault". Wklejam wam kod, który, jeśli zrozumiecie, może być pomocny. #include <iostream>
float prodA( int x )
{ float k; if( x <= 500 ) { k = x *( 1 - 0.15 ) * 12; } else { k = x *( 1 - 0.25 ) * 12; }; return k; }
float prodB( int x )
{ float k; if( x <= 300 ) { k = x *( 1 - 0.1 ) * 12; }; if(( x > 300 ) and( x <= 600 ) ) { k = 300 *( 1 - 0.1 ) * 12 +( x - 300 ) *( 1 - 0.25 ) * 12; }; if( x > 600 ) { k = x *( 1 - 0.35 ) * 12; }; return k; }
int main() { int s = 0; int lepiej_A[ 10 ][ 110 ]; int i = 0; int j = 0; int u = 0; int y = 0; int g = 0; float a; float b; do { s = s + 10; a = prodA( s ); b = prodB( s ); if( a < b ) { lepiej_A[ i ][ g ] = s; g++; }; if( b < a ) { g++; }; if( a == b ) { g++; }; } while( s != 1010 ); do { while(( lepiej_A[ i ][ j ] ) -( lepiej_A[ i ][ j - 1 ] ) == 10 ) { j++; } y = j; while(( lepiej_A[ i ][ y ] ) -( lepiej_A[ i ][ y - 1 ] ) <= 0 ) { y++; }; while(( lepiej_A[ i ][ y ] ) -( lepiej_A[ i ][ y - 1 ] ) >= 10 ) { lepiej_A[ i + 1 ][ u ] = lepiej_A[ i ][ y ]; lepiej_A[ i ][ y ] = 0; y++; u++; }; i++; u = 0; j = 0; } while( i != 9 ); for( i = 0; i <= 9; i++ ) { std::cout << std::endl; std::cout << "Tabela lepiej_A" << "[" << i << "]" << " : "; for( j = 0; j <= 101; j++ ) { std::cout << lepiej_A[ i ][ j ] << " "; }; }; return 0; }
Może nie jestem w stanie zrobić tego zadania znając pętle, tablice, funkcje? PS. ciekaw jestem ile nowych niecenzuralnych słów udało mi się wymyślić przez czas trwania moich prób Dodam, że nie chcę gotowca, tylko pomocy i objaśnień jak to zrobić :) //edit: dodałem link do screen'a zadania |
|
malan |
» 2011-01-31 16:09:15 Które to zadanie? /edit: Czwarte, ok ;p |
|
Vercevales Temat założony przez niniejszego użytkownika |
» 2011-01-31 16:13:04 EEE. Piąte :D |
|
malan |
» 2011-01-31 16:19:33 Struktury byłyby tu pomocne... |
|
Vercevales Temat założony przez niniejszego użytkownika |
» 2011-01-31 16:28:28 Więc będę się dalej dokształcał, a potem do tego wrócę :) Myślałem, że jestem już w stanie to zrobić. |
|
Vercevales Temat założony przez niniejszego użytkownika |
» 2011-02-09 18:48:17 Udało mi się zrobić podpunkt a i b bez użycia struktur, lecz teraz mam problem z podpunktem c. to link do zadania: http://img201.imageshack.us/img201/8637/201102091839231024x768s.png Wiem, że tych sztuk powinno być 550, ale niestety mój program pisze, że powinno ich być 500 ;/ #include <iostream> #include <fstream>
float prod_A( int x ) { float k; if( x <= 500 ) { k = x *( 1 - 0.15 ) * 12; } else { k = x *( 1 - 0.25 ) * 12; } return k; }
float prod_B( int x ) { float k; if( x <= 300 ) { k = x *( 1 - 0.1 ) * 12; } if( x > 300 and x <= 600 ) { k = 300 *( 1 - 0.1 ) * 12 +( x - 300 ) *( 1 - 0.25 ) * 12; } if( x > 600 ) { k = x *( 1 - 0.35 ) * 12; } return k; }
int main() { std::fstream plik; plik.open( "/home/karol/Pobrane/Matura informatyka/Dane_PP/zadanie5.txt", std::ios::out | std::ios::trunc ); std::cout << "koszt 500 sztuk w B : " << prod_B( 500 ); std::cout << "\nKoszt 550 sztuk w A : " << prod_A( 550 ) << std::endl; int a; int b = prod_B( 500 ); int t = 10; do { a = prod_A( t ); t = t + 10; } while( a <= b ); plik << "\nOdpowiedź do podpunktu c: " <<( t - 10 ); plik.close(); return 0; }
|
|
malan |
» 2011-02-10 10:26:37 To zadanie jest typowo do Excela ;p. Co do programu- zobacz jak rozkładają się koszty w przedziale <400;600>: Widzisz o co chodzi? ;) |
|
Vercevales Temat założony przez niniejszego użytkownika |
» 2011-02-10 11:10:26 Założyłem, że ceny do tego momentu będą zawsze mniejsze u producenta A niż u producenta B, przy czym muszę poszukać liczb sobie najbliższych wśród producenta A i B. Nie wiem czy dobrze ująłem to w słowa, ale rozumiem o co chodzi.
Dziękuję Malanie! |
|
« 1 » |