Advertisement
Guest User

Untitled

a guest
Dec 6th, 2016
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 18.75 KB | None | 0 0
  1. #include <stdio.h>
  2. #include<stdlib.h>
  3. #include<time.h>
  4.  
  5. float cel_na_fahr(float x);
  6. float fahr_na_cel(float x);
  7. float cel_na_kel (float x);
  8. float kel_na_cel (float x);
  9. int JedenRekord=1,RekordyTablicy=1,*pRekordyTablicy ; // globalne do tablic
  10. //PROTOTYPY
  11.  
  12. void WypisywanieNaTablice(int JedenRekord,int RekordyTablicy,float temp_wejscia[],char char_wejscia[],float temp_wyjscia[],char char_wyjscia[]);
  13.  
  14. void UsuwanieRekordow(int JedenRekord,int RekordyTablicy,float temp_wejscia [],char char_wejscia [],float temp_wyjscia [],char char_wyjscia[]);
  15.  
  16. void WypisanieJednegoRekordu(int JedenRekord,int RekordyTablicy,float temp_wejscia[],char char_wejscia[],float temp_wyjscia[],char char_wyjscia[]);
  17.  
  18. void ModyfikacjaRekordu(int JedenRekord,int RekordyTablicy,float temp_wejscia[],char char_wejscia[],float temp_wyjscia[],char char_wyjscia[]);
  19.  
  20. void UsuwanieWszystkichRekordow(int JedenRekord,int RekordyTablicy,float temp_wejscia [],char char_wejscia [],float temp_wyjscia [],char char_wyjscia[]);
  21.  
  22. void Losowanie(int JedenRekord,int RekordyTablicy,float temp_wejscia[],char char_wejscia[],float temp_wyjscia[],char char_wyjscia[]);
  23.  
  24. int main()
  25. {
  26.     pRekordyTablicy=&RekordyTablicy;
  27.     float fahrenheit, celsjusz, kelwin, x, y;
  28.     char char_wejscia[21],char_wyjscia[21];
  29.     float temp_wejscia[21],temp_wyjscia[21];
  30.     int wybor;
  31.  
  32.     while (wybor!=12){
  33. poczatek://GOTO
  34.     printf("Przelicznik temperatur. Wybierz cyfrę:\n");
  35.     printf("            wybierz typ konwersji\n");
  36.     printf("[1]  --> Z Celsjusza do Fahrenheita\n");
  37.     printf("[2]  --> Z Fahrenheita do Celsjusza\n");
  38.     printf("[3]  --> Z Kelwina do Fahrenheita\n");
  39.     printf("[4]  --> Z Fahrenheita do Kelwina\n");
  40.     printf("[5]  --> Z Kelwina do Celsjusza\n");
  41.     printf("[6]  --> Z Celsjusza do Kelwina\n");
  42.     printf("[7]  --> Wyniki Przeliczen\n");
  43.     printf("[8]  --> Usuwanie Rekordow\n");
  44.     printf("[9]  --> Pokaz Jeden Rekord\n");
  45.     printf("[10] --> Modyfikuj Rekord\n");
  46.     printf("[11] --> Wypelnij Tablice Przeliczen Losowymi Temperaturami\n");
  47.     printf("[0]  --> Wyjscie z programu\n");
  48.     scanf("%d",&wybor);
  49.     printf("\n\n");
  50.  
  51.  
  52.         switch(wybor)
  53.         {
  54.  
  55.  
  56.             case 1:
  57.                 printf("podaj wartosc temperatury w stopniach Celcjusza:");
  58.                 scanf("%f",&celsjusz);
  59.                 x = cel_na_fahr(celsjusz);
  60.                  if (celsjusz<(-273.15))
  61.                 {
  62.                     printf("Najnizsza temperatura wystepujaca w przyrodzie wynosi -273.15 Celsjusza (0 Kelwina)\n\n\n");
  63.                     break;
  64.                     goto poczatek;
  65.                 }
  66.  
  67.  
  68.                     temp_wyjscia[JedenRekord]=x;            //Zapis do ogolnej tabeli
  69.                     temp_wejscia[JedenRekord]=celsjusz;
  70.                     char_wejscia[JedenRekord]='C';
  71.                     char_wyjscia[JedenRekord]='F';
  72.                     JedenRekord++;RekordyTablicy++;         //inkrementacja potrzebna pozniej do wywolania tablicy
  73.                 printf("Temperatura w stopniach Fahrenheita wynosi: %3.2f\n\n\n",x);
  74.                 break;
  75.  
  76.  
  77.             case 2:
  78.                 printf("podaj wartosc temperatury w stopniach Fahrenheita:");
  79.                 scanf("%f",&fahrenheit);
  80.                 x = fahr_na_cel(fahrenheit);
  81.                  if (fahrenheit<-459.67)
  82.                 {
  83.                     printf("Najnizsza temperatura wystepujaca w przyrodzie wynosi -459.67 Fahrenheita (0 Kelwina)\n\n\n");
  84.                     break;
  85.                     goto poczatek;
  86.                 }
  87.  
  88.  
  89.                     temp_wyjscia[JedenRekord]=x;            //Zapis do ogolnej tabeli
  90.                     temp_wejscia[JedenRekord]=fahrenheit;
  91.                     char_wejscia[JedenRekord]='F';
  92.                     char_wyjscia[JedenRekord]='C';
  93.                     JedenRekord++;RekordyTablicy++;         //inkrementacja potrzebna pozniej do wywolania tablicy
  94.                 printf("Temperatura w stopniach Celsjusza wynosi: %3.2f\n\n\n",x);
  95.                 break;
  96.  
  97.                 case 3:
  98.                 printf("podaj wartosc temperatury w stopniach Kelwina:");
  99.                 scanf("%f",&kelwin);
  100.                 x = kel_na_cel(kelwin);
  101.                 y = cel_na_fahr(x);
  102.                  if (kelwin<0)
  103.                 {
  104.                     printf("Najnizsza temperatura wystepujaca w przyrodzie wynosi 0 Kelwina\n\n\n");
  105.                     break;
  106.                     goto poczatek;
  107.                 }
  108.  
  109.  
  110.                     temp_wyjscia[JedenRekord]=y;            //Zapis do ogolnej tabeli
  111.                     temp_wejscia[JedenRekord]=kelwin;
  112.                     char_wejscia[JedenRekord]='K';
  113.                     char_wyjscia[JedenRekord]='F';
  114.                     JedenRekord++;RekordyTablicy++;         //inkrementacja potrzebna pozniej do wywolania tablicy
  115.                 printf("Temperatura w stopniach Fahrenheita wynosi: %3.2f\n\n\n",y);
  116.                 break;
  117.  
  118.             case 4:
  119.                 printf("podaj wartosc temperatury w stopniach Fahrenheita:");
  120.                 scanf("%f",&fahrenheit);
  121.                 x=fahr_na_cel(fahrenheit);
  122.                 y=cel_na_kel(x);
  123.                 if (fahrenheit<-459.67)
  124.                 {
  125.                     printf("Najnizsza temperatura wystepujaca w przyrodzie wynosi -459.67 Fahrenheita (0 Kelwina)\n\n\n");
  126.                     break;
  127.                     goto poczatek;
  128.                 }
  129.  
  130.  
  131.                     temp_wyjscia[JedenRekord]=y;            //Zapis do ogolnej tabeli
  132.                     temp_wejscia[JedenRekord]=fahrenheit;
  133.                     char_wejscia[JedenRekord]='F';
  134.                     char_wyjscia[JedenRekord]='K';
  135.                     JedenRekord++;RekordyTablicy++;         //inkrementacja potrzebna pozniej do wywolania tablicy
  136.                 printf("Temperatura w stopniach Kelwina wynosi: %3.2f\n\n\n",y);
  137.                 break;
  138.  
  139.  
  140.             case 5:
  141.                 printf("podaj wartosc temperatury w stopniach Kelwina:");
  142.                 scanf("%f",&kelwin);
  143.                 x = kel_na_cel(kelwin);
  144.                  if (kelwin<0)
  145.                 {
  146.                     printf("Najnizsza temperatura wystepujaca w przyrodzie wynosi 0 Kelwina\n\n\n");
  147.                     break;
  148.                     goto poczatek;
  149.                 }
  150.  
  151.  
  152.                     temp_wyjscia[JedenRekord]=x;            //Zapis do ogolnej tabeli
  153.                     temp_wejscia[JedenRekord]=kelwin;
  154.                     char_wejscia[JedenRekord]='K';
  155.                     char_wyjscia[JedenRekord]='C';
  156.                     JedenRekord++;RekordyTablicy++;         //inkrementacja potrzebna pozniej do wywolania tablicy
  157.                 printf("Temperatura w stopniach Celsjusza wynosi: %3.2f\n\n\n",x);
  158.                 break;
  159. //===========================================================================================================================================================
  160.             case 6:
  161.                 printf("podaj wartosc temperatury w stopniach Celsjusza:");
  162.                 scanf("%f",&celsjusz);
  163.                 x = cel_na_kel(celsjusz);
  164.                  if (celsjusz<(-273.15))
  165.                 {
  166.                     printf("Najnizsza temperatura wystepujaca w przyrodzie wynosi -273.15 Celsjusza (0 Kelwina)\n\n\n");
  167.                     break;
  168.                     goto poczatek;
  169.                 }
  170.  
  171.  
  172.                     temp_wyjscia[JedenRekord]=x;            //Zapis do ogolnej tabeli
  173.                     temp_wejscia[JedenRekord]=celsjusz;
  174.                     char_wejscia[JedenRekord]='C';
  175.                     char_wyjscia[JedenRekord]='K';
  176.                     JedenRekord++;RekordyTablicy++;         //inkrementacja potrzebna pozniej do wywolania tablicy
  177.                 printf("Temperatura w stopniach Kelwina wynosi: %3.2f\n\n\n",x);
  178.                 break;
  179.  
  180.  
  181.             case 7:
  182.                 WypisywanieNaTablice(JedenRekord,RekordyTablicy,temp_wejscia,char_wejscia,temp_wyjscia,char_wyjscia);
  183.                 break;
  184.  
  185.             case 8:
  186.                 int wybor2;
  187.                 printf("Chcesz usunac jeden(1) czy wszystkie rekordy(2)? ");
  188.                 scanf("%d",&wybor2);
  189.                 if (wybor2 == 1)
  190.                 {
  191.                     UsuwanieRekordow(JedenRekord,RekordyTablicy,temp_wejscia,char_wejscia,temp_wyjscia,char_wyjscia);
  192.                     JedenRekord--;
  193.                     RekordyTablicy--;
  194.                 }
  195.  
  196.                 if (wybor2 == 2)
  197.                 {
  198.                     UsuwanieWszystkichRekordow(JedenRekord,RekordyTablicy,temp_wejscia,char_wejscia,temp_wyjscia,char_wyjscia);
  199.                     JedenRekord=1;
  200.                     RekordyTablicy=1;
  201.                 }
  202.                 break;
  203.  
  204.             case 9:
  205.                 WypisanieJednegoRekordu(JedenRekord,RekordyTablicy,temp_wejscia,char_wejscia,temp_wyjscia,char_wyjscia);
  206.                 break;
  207.  
  208.             case 10:
  209.                 ModyfikacjaRekordu(JedenRekord,RekordyTablicy,temp_wejscia,char_wejscia,temp_wyjscia,char_wyjscia);
  210.                 break;
  211.  
  212.             case 11:
  213.                 Losowanie(JedenRekord,RekordyTablicy,temp_wejscia,char_wejscia,temp_wyjscia,char_wyjscia);
  214.                 RekordyTablicy+=20;
  215.                 break;
  216.  
  217.  
  218.         }
  219.     }
  220.    return 0;
  221. }
  222. float cel_na_fahr (float x)
  223. {
  224.     return (x * (9.0/5.0)) + 32;
  225. }
  226. float fahr_na_cel (float x)
  227. {
  228.     return (5.0/9.0)*(x-32);
  229. }
  230. float cel_na_kel (float x)
  231. {
  232.     return x+273.15;
  233. }
  234. float kel_na_cel (float x)
  235. {
  236.    return x-273.15;
  237. }
  238. //Zapisane tablice
  239. void WypisywanieNaTablice(int JedenRekord,int RekordyTablicy,float temp_wejscia [],char char_wejscia [],float temp_wyjscia [],char char_wyjscia[])
  240. {
  241.     if(RekordyTablicy>1)
  242.     {
  243.         for (int i=1;i<*pRekordyTablicy;i++)//wywala pokolei indeksy
  244.         {
  245.           printf("%d.\t %.2f %c --------> %.2f %c \n",i,temp_wejscia[i],char_wejscia[i],temp_wyjscia[i],char_wyjscia[i]);
  246.  
  247.         }
  248.         printf("\n\n");
  249.     }
  250.     else
  251.         printf("Nie ma zadnego rekordu!\n\n");
  252. }
  253. //Usuwanie rekordu
  254. void UsuwanieRekordow(int JedenRekord,int RekordyTablicy,float temp_wejscia [],char char_wejscia [],float temp_wyjscia [],char char_wyjscia[])
  255. {
  256.     if(RekordyTablicy>1)
  257.     {
  258.         int WyborRekordu;
  259.         printf("Ktory rekord chcesz usunac?:");
  260.         scanf("%d",&WyborRekordu);
  261.         temp_wyjscia[WyborRekordu]=0;
  262.         temp_wejscia[WyborRekordu]=0;
  263.         char_wejscia[WyborRekordu]=' ';
  264.         char_wyjscia[WyborRekordu]=' ';
  265.             for (int i=WyborRekordu;i<*pRekordyTablicy;i++)//wrzuca na miejsce usunietej tablicy tablice nastepna z gory | pointer dla pewnosci
  266.             {
  267.                         temp_wyjscia[i]=temp_wyjscia[i+1];
  268.                         temp_wejscia[i]=temp_wejscia[i+1];
  269.                         char_wejscia[i]=char_wejscia[i+1];
  270.                         char_wyjscia[i]=char_wyjscia[i+1];
  271.             }
  272.     }
  273.     else
  274.         printf("Nie ma zadnego rekordu!\n\n");
  275. }
  276. //Usuwanie wszytskich rekordów
  277. void UsuwanieWszystkichRekordow(int JedenRekord,int RekordyTablicy,float temp_wejscia [],char char_wejscia [],float temp_wyjscia [],char char_wyjscia[])
  278. {
  279.     if( RekordyTablicy>1)
  280.     {
  281.         int tmp;
  282.         tmp=JedenRekord;
  283.         JedenRekord=1;
  284.         for(JedenRekord;JedenRekord<=tmp;JedenRekord++)
  285.         {
  286.                 temp_wyjscia[JedenRekord]=0;
  287.                 temp_wejscia[JedenRekord]=0;
  288.                 char_wejscia[JedenRekord]=' ';
  289.                 char_wyjscia[JedenRekord]=' ';
  290.         }
  291.     }
  292.     else
  293.         printf("Nie ma zadnego rekordu!\n\n");
  294. }
  295. //Wpisanie 1 rekordu
  296. void WypisanieJednegoRekordu(int JedenRekord,int RekordyTablicy,float temp_wejscia[],char char_wejscia[],float temp_wyjscia[],char char_wyjscia[])
  297. {
  298.      if(RekordyTablicy>1)
  299.     {
  300.         int WyborRekordu;
  301.         printf("Jaki rekord chcesz wypisac? :");
  302.         scanf("%d",&WyborRekordu);
  303.         JedenRekord=WyborRekordu;
  304.         printf("\t %.2f %c --------> %.2f %c \n",temp_wejscia[JedenRekord],char_wejscia[JedenRekord],temp_wyjscia[JedenRekord],char_wyjscia[JedenRekord]);
  305.         printf("/n/n");
  306.     }
  307.     else
  308.         printf("Nie ma zadnego rekordu!\n\n");
  309. }
  310. //Modyfikacja
  311. void ModyfikacjaRekordu(int JedenRekord,int RekordyTablicy,float temp_wejscia[],char char_wejscia[],float temp_wyjscia[],char char_wyjscia[])
  312. {
  313.     char PierwszaTemp, DrugaTemp;
  314.     float Temperatura,x;
  315.     JeszczeRaz://< GOTO
  316.     printf("Ktory rekord chcesz zmienic:");
  317.     scanf("%d",&JedenRekord);
  318.     printf("\nPodaj jednostke pierwszej temperatury(C,F,K):");
  319.     scanf("%s",&PierwszaTemp);
  320.     printf("\nPodaj jednostke temperatury na ktora chcesz przeliczyc(C,K,F):");
  321.     scanf("%s",&DrugaTemp);
  322.     printf("\nPodaj wartosc temperatury:");
  323.     scanf("%f",&Temperatura);
  324.  
  325.         temp_wejscia[JedenRekord]=Temperatura;
  326.          // TEMP WEJSCIA ZAWSZE TAKA SAMA
  327.  
  328.         if(PierwszaTemp=='C' && (DrugaTemp=='K' || DrugaTemp=='F'));
  329.         {
  330.             if (Temperatura<(-273.15))                                                                                                                                                                          //Na wypadek nieprawidlowej temp
  331.                 {
  332.                     printf("Najnizsza temperatura wynosi -273.15 Celsjusza (0 Kelwina), wpisz dane ponownie\n\n\n");
  333.                     goto JeszczeRaz;
  334.                 }
  335.             char_wejscia[JedenRekord]='C';
  336.             if (DrugaTemp == 'K')                                                                                                                                                                                   // Wklepanie drugiej temp
  337.                  {
  338.                     temp_wyjscia[JedenRekord]=cel_na_kel(Temperatura);
  339.                     char_wyjscia[JedenRekord]='K';
  340.                  }
  341.             if (DrugaTemp == 'F')
  342.             {
  343.                 temp_wyjscia[JedenRekord]=cel_na_fahr(Temperatura);
  344.                 char_wyjscia[JedenRekord]='F';
  345.             }
  346.         }
  347.  
  348.  
  349.      if(PierwszaTemp=='K' && (DrugaTemp=='C' || DrugaTemp=='F'));
  350.             {
  351.                 if (Temperatura<0)
  352.                     {
  353.                         printf("Najnizsza temperatura  wynosi 0 Kelwina. Wpisz dane ponownie\n\n\n");
  354.                         goto JeszczeRaz;
  355.                     }
  356.                 char_wejscia[JedenRekord]='K';
  357.                 if (DrugaTemp == 'C')
  358.                      {
  359.                         temp_wyjscia[JedenRekord]=kel_na_cel(Temperatura);
  360.                         char_wyjscia[JedenRekord]='C';
  361.                      }
  362.                 if (DrugaTemp == 'F')
  363.                 {
  364.                     x=kel_na_cel(Temperatura);
  365.                     temp_wyjscia[JedenRekord]=cel_na_fahr(x);
  366.                     char_wyjscia[JedenRekord]='F';
  367.                 }
  368.             }
  369.  
  370.      if(PierwszaTemp=='F' && (DrugaTemp=='C' || DrugaTemp=='K'));
  371.                 {
  372.                     if (Temperatura<-459.67)
  373.                         {
  374.                             printf("Najnizsza temperatura  wynosi -459.67 Fahrenheita (0 Kelwina). Wpisz dane ponownie\n\n\n");
  375.                             goto JeszczeRaz;
  376.                         }
  377.                     char_wejscia[JedenRekord]='F';
  378.                     if (DrugaTemp == 'C')
  379.                          {
  380.                             temp_wyjscia[JedenRekord]=fahr_na_cel(Temperatura);
  381.                             char_wyjscia[JedenRekord]='C';
  382.                          }
  383.                     if (DrugaTemp == 'K')
  384.                     {
  385.                         x=fahr_na_cel(Temperatura);
  386.                         temp_wyjscia[JedenRekord]=cel_na_kel(x);
  387.                         char_wyjscia[JedenRekord]='K';
  388.                     }
  389.                 }
  390.  
  391. }
  392. //Losowe liczby
  393. void Losowanie(int JedenRekord,int RekordyTablicy,float temp_wejscia[],char char_wejscia[],float temp_wyjscia[],char char_wyjscia[])
  394. {
  395.     int random = time(NULL),random2;
  396.     float TempRandom = time(NULL),x;
  397.     for (JedenRekord=1;JedenRekord<=20;JedenRekord++)
  398.     {
  399.         srand((JedenRekord+random+time(NULL))*18011997); // seed z ktorego ma brac randoma
  400.         random = rand() % 3 + 1; // ograniczenie randoma od 1 do 3
  401.  
  402.         if (random == 1)
  403.         {
  404.                 char_wejscia[JedenRekord]='C';
  405.                 srand((JedenRekord+random+time(NULL))*18011997); // seed randoma
  406.                 TempRandom= rand() % 673 - 273; // ograniczenie od -273 do 400
  407.                 temp_wejscia[JedenRekord]=TempRandom;
  408.                 srand((JedenRekord+TempRandom+time(NULL))*18011997);
  409.                 random2 = rand() % 2 + 1; // ograniczenie randoma od 1 do 2, wybiera na jaka temperature zkonwertuje sie randomowa temp
  410.                     if (random2 == 1)
  411.                          {
  412.                             temp_wyjscia[JedenRekord]=cel_na_kel(TempRandom); // funkcja to konwertowania
  413.                             char_wyjscia[JedenRekord]='K';
  414.                          }
  415.                     if (random2 == 2)
  416.                     {
  417.                         temp_wyjscia[JedenRekord]=cel_na_fahr(TempRandom);
  418.                         char_wyjscia[JedenRekord]='F';
  419.                     }
  420.         }
  421.         if (random == 2)
  422.         {
  423.                 char_wejscia[JedenRekord]='K';
  424.                 srand((JedenRekord+random+time(NULL))*18011997);
  425.                 TempRandom= rand() % 400 + 1;
  426.                 temp_wejscia[JedenRekord]=TempRandom;
  427.                 srand((JedenRekord+TempRandom+time(NULL))*18011997);
  428.                 random2 = rand() % 2 + 1;
  429.                     if (random2 == 1)
  430.                          {
  431.                             temp_wyjscia[JedenRekord]=kel_na_cel(TempRandom);
  432.                             char_wyjscia[JedenRekord]='C';
  433.                          }
  434.                     if (random2 == 2)
  435.                     {
  436.                         x=kel_na_cel(TempRandom);
  437.                         temp_wyjscia[JedenRekord]=cel_na_fahr(x);
  438.                         char_wyjscia[JedenRekord]='F';
  439.                     }
  440.         }
  441.         if (random == 3)
  442.         {
  443.                 char_wejscia[JedenRekord]='F';
  444.                 srand((JedenRekord+random+time(NULL))*18011997);
  445.                 TempRandom= rand() % 859 - 459;
  446.                 temp_wejscia[JedenRekord]=TempRandom;
  447.                 srand((JedenRekord+TempRandom+time(NULL))*18011997);
  448.                 random2 = rand() % 2 + 1;
  449.                     if (random2 == 1)
  450.                          {
  451.                             temp_wyjscia[JedenRekord]=fahr_na_cel(TempRandom);
  452.                             char_wyjscia[JedenRekord]='C';
  453.                          }
  454.                     if (random2 == 2)
  455.                     {
  456.                         x=fahr_na_cel(TempRandom);
  457.                         temp_wyjscia[JedenRekord]=cel_na_kel(x);
  458.                         char_wyjscia[JedenRekord]='K';
  459.                     }
  460.  
  461.     }
  462.  
  463.  }
  464. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement