Výdělek na internetu - CZEmoney.com

Peníze, výdělek, reklama, affiliate, klikačky, PTP, MLM a další firmy
Právě je 25.05.12 02:59

Všechny časy jsou v UTC + 1 hodina




 [ Příspěvků: 24 ] 
Autor Zpráva
 PříspěvekPředmět příspěvku: program v C, odměna jistá
Napsal: 05.12.11 20:06 
Offline
Uživatelský avatar

Registrován: 03.09.08 19:11
Příspěvky: 379
Bydliště: The City of Skalica
Toto je úvodní příspěvek

Zdravím. Potřebuji udělat v C program který výpočítá základní statistické charakteristiky ze souboru číselných údajů (max. a min. prvek, medián, průměr, rozptyl, směrodatná odchylka, lineární regrese).
Alespoň část potřebuji teď do středy(7.12), jinak program do 13.12.

Jsem začátečník a nemám teď mnoho času, na odměně se dohodneme.

_________________
Lidi, seberealizujte se!


Naposledy upravil klix dne 05.12.11 21:38, celkově upraveno 2

Nahoru
 Profil  
 
Napsal: 05.12.11 21:29 
Offline
Charita
Charita
Uživatelský avatar

Registrován: 29.05.07 16:18
Příspěvky: 2670
min a max prvek, median a prumer jsou hned

Rozptyl, sm. odchylka je o trochu nadyl (musel bych si vzpoemnou jak se to pocita :d)

a do linearni regrese se mi teda v C vubec nechce.

_________________
Obchod s originálními dárky.
Programuji v PHP (i Nette), Javě a C/C++ (i Qt). Mám zkušenosti s relačními databázemi MySQL a ORACLE. Spravuji servery na distribucích v debianovém základu. (Ubunu, Debian, Mint).
Zprovozním Vám na VPS na co si jen vzpomenete.
Jsem student, ceny mám tedy studentské. (cca 30Kč/hod) Na svou práci vystavím fakturu. V případě zájmu mě kontaktujte zde přes PM nebo přes jabber cadek.jiri@gmail.com.


Nahoru
 Profil  
 
 PříspěvekPředmět příspěvku: Re: program v C, odměna jistá
Napsal: 05.12.11 22:12 
Offline
Uživatelský avatar

Registrován: 22.08.08 23:31
Příspěvky: 250
nj taky bych už musel pracně vzpomínat jak se to počítá :D

_________________
Pokud potřebujete něco s PHP/MySQL/C/C++ apod. neváhejte a napište mi.


Nahoru
 Profil  
 
 PříspěvekPředmět příspěvku: Re: program v C, odměna jistá
Napsal: 06.12.11 10:52 
Offline
Uživatelský avatar

Registrován: 03.09.08 19:11
Příspěvky: 379
Bydliště: The City of Skalica
mohli bychom se domluvit že by jste mi do zítra někdo spravili aspoň ten max. a min. prvek, medián, průměr a třeba i rozptyl?
vzorce na výpočty jsou na wiki
Kód:
http://cs.wikipedia.org/wiki/Rozptyl_%28statistika%29

_________________
Lidi, seberealizujte se!


Nahoru
 Profil  
 
 PříspěvekPředmět příspěvku: Re: program v C, odměna jistá
Napsal: 06.12.11 15:03 
Offline
Uživatelský avatar

Registrován: 28.03.08 16:27
Příspěvky: 405
Tady mas min, max a avg...

Kód:
#include <stdio.h>

int main()
{
  FILE *fp = fopen("cisla.txt", "r");
  int num = 0, max = 0, min = 0, i;
  float sum = 0;
 
  if (fp != NULL)
  {
    for (i = 0; fscanf(fp, "%i\n", &num) != EOF; i++)
    {
      if (i == 0) min = max = num;

      if (num > max)
        max = num;
      else
        if (num < min)
          min = num; 
       
      sum += num;
    }
   
    printf("MAX: %i, MIN: %i, AVG: %.02f", max, min, (sum/i), sum);
   
    fclose(fp);
  }
  else
  {
      printf("Nelze otevrit soubor");
  }
 
  getchar();
}

_________________
Aukro Aukce
Aukro Aukce

Směňuji PP/AP/BU => LR. Poplatek 3-5%. => smenarna-pp-ap-bu-lr-vt60744.html


Naposledy upravil TnT dne 07.12.11 11:34, celkově upraveno 1

Nahoru
 Profil  
 
 PříspěvekPředmět příspěvku: Re: program v C, odměna jistá
Napsal: 06.12.11 15:21 
Offline

Registrován: 31.07.09 19:25
Příspěvky: 463
TnT: Zkus min a max z 5,3,4 nebo z -3,-1 :wink:


Nahoru
 Profil  
 
 PříspěvekPředmět příspěvku: Re: program v C, odměna jistá
Napsal: 06.12.11 15:48 
Offline
Uživatelský avatar

Registrován: 28.03.08 16:27
Příspěvky: 405
Pravda a proto pod for vložíme ještě něco :)
Kód:
if (i == 0) min = max = num;

_________________
Aukro Aukce
Aukro Aukce

Směňuji PP/AP/BU => LR. Poplatek 3-5%. => smenarna-pp-ap-bu-lr-vt60744.html


Nahoru
 Profil  
 
 PříspěvekPředmět příspěvku: Re: program v C, odměna jistá
Napsal: 06.12.11 18:45 
Offline

Registrován: 31.07.09 19:25
Příspěvky: 463
A jeste bych za else pridal
Kód:
if num < min
(viz. 5,3,4)


Nahoru
 Profil  
 
 PříspěvekPředmět příspěvku: Re: program v C, odměna jistá
Napsal: 06.12.11 21:00 
Offline
Uživatelský avatar

Registrován: 03.09.08 19:11
Příspěvky: 379
Bydliště: The City of Skalica
swm: kam presne to je treba pridat?

_________________
Lidi, seberealizujte se!


Nahoru
 Profil  
 
 PříspěvekPředmět příspěvku: Re: program v C, odměna jistá
Napsal: 06.12.11 21:25 
Offline

Registrován: 31.07.09 19:25
Příspěvky: 463
Kód:
if (num > max)
  max = num;
else if (num < min)
  min = num;


Nahoru
 Profil  
 
 PříspěvekPředmět příspěvku: Re: program v C, odměna jistá
Napsal: 06.12.11 21:35 
Offline
Uživatelský avatar

Registrován: 03.09.08 19:11
Příspěvky: 379
Bydliště: The City of Skalica
díky....a náhodou už se ti nechce na medián nebo rozptyl co? :roll:

_________________
Lidi, seberealizujte se!


Nahoru
 Profil  
 
 PříspěvekPředmět příspěvku: Re: program v C, odměna jistá
Napsal: 06.12.11 22:40 
Offline

Registrován: 31.07.09 19:25
Příspěvky: 463
Sorry, ale v C neumim psat, umim ho akorat cist :mrgreen:


Nahoru
 Profil  
 
 PříspěvekPředmět příspěvku: Re: program v C, odměna jistá
Napsal: 07.12.11 15:03 
Offline
Uživatelský avatar

Registrován: 03.09.08 19:11
Příspěvky: 379
Bydliště: The City of Skalica
Pustí se někdo do celého programu? Čím dřív, tím líp, nejpozději však do 13.12.
Dejte vědet zda na tom někdo dělá, nebo zda by to někdo udělal do pár dní.
Děkuji.

_________________
Lidi, seberealizujte se!


Nahoru
 Profil  
 
 PříspěvekPředmět příspěvku: Re: program v C, odměna jistá
Napsal: 09.12.11 16:10 
Offline
Uživatelský avatar

Registrován: 22.08.08 23:31
Příspěvky: 250
něco sem zbastlil (kromě lin. regrese by to mělo bejt všechno)
btw. radši si to zkontroluj, už sem to nepočítal hoooodně dlouho, takže už si tím nejsem tak moc jistej :lol:
Kód:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

void bubbleSort(int * array, int size)
{
    for (int i = 0; i < size - 1; i++)
    {
        for (int j = 0; j < size - i - 1; j++)
        {
            if(array[j+1] < array[j])
            {
                int tmp = array[j + 1];
                array[j + 1] = array[j];
                array[j] = tmp;
            } 
        } 
    } 
}

int main()
{
    FILE * soubor;
    int cislo, i = 0, j, min, max;
    float median, prumer, odchylka, rozptyl;
    int * pole = NULL;
    int * tmp  = NULL;
    soubor = fopen("cisla.txt", "r");
    if (soubor == NULL)
    {
        printf("Nepodarilo se otevrit soubor cisla.txt\n");
        return 1;
    }
    while (fscanf(soubor, "%d\n", &cislo) != EOF)
    {
        tmp = (int*) realloc(pole, (++i)*sizeof(int));
        if (tmp == NULL)
        {
            printf("Dosla pamet\n");
            free(pole);
            return 1;
        }
        else
        {
            pole      = tmp;
            pole[i-1] = cislo;
        }
    }
    fclose(soubor);
    if (i < 2)
    {
        printf("Nebylo nacteno dost cisel\n");
        free(pole);
        return 1;
    }
    bubbleSort(pole, i); // serazeni bubble sortem kvuli medianu
    // median
    if (i % 2 == 0)
        median = (float) ((pole[i/2]+pole[(i/2)+1])/2);
    else
        median = (float) pole[(i/2)+1];
    // min a max
    min = pole[0];
    max = pole[i-1];
    // prumer
    prumer = 0;
    for (j=0;j<i;j++)
        prumer += pole[j];
    prumer /= i;
    // smerodatna odchylka
    odchylka = 0;
    for (j=0;j<i;j++)
        odchylka += (pole[j]-prumer)*(pole[j]-prumer);
    // rozptyl
    rozptyl = odchylka/i;
    odchylka = sqrt(rozptyl);
   
    // vypis
    printf("Minimum:  %d\n", min);
    printf("Maximum:  %d\n", max);
    printf("Prumer:   %f\n", prumer);
    printf("Median:   %f\n", median);
    printf("Odchylka: %f\n", odchylka);
    printf("Rozptyl:  %f\n", rozptyl);
    free(pole);
    return 0;
}

_________________
Pokud potřebujete něco s PHP/MySQL/C/C++ apod. neváhejte a napište mi.


Nahoru
 Profil  
 
 PříspěvekPředmět příspěvku: Re: program v C, odměna jistá
Napsal: 10.12.11 10:35 
Offline
Charita
Charita
Uživatelský avatar

Registrován: 29.05.07 16:18
Příspěvky: 2670
Ono tu regresi se tady asi nebude chtit delat nikomu, ja kdyz si jen vzpomenu jak jsem to ve statistice pocital na papir...
http://cs.wikipedia.org/wiki/Line%C3%A1rn%C3%AD_regrese

_________________
Obchod s originálními dárky.
Programuji v PHP (i Nette), Javě a C/C++ (i Qt). Mám zkušenosti s relačními databázemi MySQL a ORACLE. Spravuji servery na distribucích v debianovém základu. (Ubunu, Debian, Mint).
Zprovozním Vám na VPS na co si jen vzpomenete.
Jsem student, ceny mám tedy studentské. (cca 30Kč/hod) Na svou práci vystavím fakturu. V případě zájmu mě kontaktujte zde přes PM nebo přes jabber cadek.jiri@gmail.com.


Nahoru
 Profil  
 
 PříspěvekPředmět příspěvku: Re: program v C, odměna jistá
Napsal: 11.12.11 14:58 
Offline
Uživatelský avatar

Registrován: 03.09.08 19:11
Příspěvky: 379
Bydliště: The City of Skalica
Manro díky, ale u prvních 2 for-ů mi to hází chybu:
Kód:
error: 'for' loop initial declaration used outside C99 mode

nevíte kde je problém?

_________________
Lidi, seberealizujte se!


Nahoru
 Profil  
 
 PříspěvekPředmět příspěvku: Re: program v C, odměna jistá
Napsal: 11.12.11 15:21 
Offline
Uživatelský avatar

Registrován: 05.05.10 08:25
Příspěvky: 247
Proměnné deklaruj před cyklem, tedy:
Kód:
int i,j;
for (i = 0; i < size - 1; i++)
    {
        for (j = 0; j < size - i - 1; j++)
        { ...
        {


Nahoru
 Profil  
 
 PříspěvekPředmět příspěvku: Re: program v C, odměna jistá
Napsal: 11.12.11 15:39 
Offline
Uživatelský avatar

Registrován: 03.09.08 19:11
Příspěvky: 379
Bydliště: The City of Skalica
teď to hází chyb ješte víc
btw zápisem
Kód:
(int * array, int size)
je správně deklarována neznámá "size" jako počet prvků pole?

_________________
Lidi, seberealizujte se!


Nahoru
 Profil  
 
 PříspěvekPředmět příspěvku: Re: program v C, odměna jistá
Napsal: 11.12.11 16:17 
Offline
Uživatelský avatar

Registrován: 22.08.08 23:31
Příspěvky: 250
klix píše:
teď to hází chyb ješte víc
btw zápisem
Kód:
(int * array, int size)
je správně deklarována neznámá "size" jako počet prvků pole?

int array[size]
cca takhle by to mělo vypadat, ale myslim, že ti to hodí varování, protože to nemá rádo proměnnou jako určení počtu prvků v poli, takže nejlepší to bude dynamicky alokovat

int * array = (int *) malloc(size * sizeof(int));
a na konci programu uvolnit pamět (musíš to uvolnit i pokud nastane chyba, jinak by ti tam vzniknul memory leak)
free(array)

_________________
Pokud potřebujete něco s PHP/MySQL/C/C++ apod. neváhejte a napište mi.


Nahoru
 Profil  
 
 PříspěvekPředmět příspěvku: Re: program v C, odměna jistá
Napsal: 11.12.11 16:44 
Offline
Uživatelský avatar

Registrován: 03.09.08 19:11
Příspěvky: 379
Bydliště: The City of Skalica
jsem trouba a kompilátor mi stále u něčeho řve, mohl by si sem pls hodit celý kód?

_________________
Lidi, seberealizujte se!


Nahoru
 Profil  
 
 PříspěvekPředmět příspěvku: Re: program v C, odměna jistá
Napsal: 11.12.11 17:03 
Offline
Uživatelský avatar

Registrován: 22.08.08 23:31
Příspěvky: 250
sorry, nevim proč sem zas řešil deklaraci pole, když si chtěl jen co ta funkce má za parametry :lol:
size je počet prvků v poli a tenhle kód by ti měl projít bez chyb
Kód:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

void bubbleSort(int * array, int size)
{
    int i, j;
    for (i = 0; i < size - 1; i++)
    {
        for (j = 0; j < size - i - 1; j++)
        {
            if(array[j+1] < array[j])
            {
                int tmp = array[j + 1];
                array[j + 1] = array[j];
                array[j] = tmp;
            }
        }
    }
}

int main()
{
    FILE * soubor;
    int cislo, i = 0, j, min, max;
    float median, prumer, odchylka, rozptyl;
    int * pole = NULL;
    int * tmp  = NULL;
    soubor = fopen("cisla.txt", "r");
    if (soubor == NULL)
    {
        printf("Nepodarilo se otevrit soubor cisla.txt\n");
        return 1;
    }
    while (fscanf(soubor, "%d\n", &cislo) != EOF)
    {
        tmp = (int*) realloc(pole, (++i)*sizeof(int));
        if (tmp == NULL)
        {
            printf("Dosla pamet\n");
            free(pole);
            return 1;
        }
        else
        {
            pole      = tmp;
            pole[i-1] = cislo;
        }
    }
    fclose(soubor);
    if (i < 2)
    {
        printf("Nebylo nacteno dost cisel\n");
        free(pole);
        return 1;
    }
    bubbleSort(pole, i); // serazeni bubble sortem kvuli medianu
    // median
    if (i % 2 == 0)
        median = (float) ((pole[i/2]+pole[(i/2)+1])/2);
    else
        median = (float) pole[(i/2)+1];
    // min a max
    min = pole[0];
    max = pole[i-1];
    // prumer
    prumer = 0;
    for (j=0;j<i;j++)
        prumer += pole[j];
    prumer /= i;
    // smerodatna odchylka
    odchylka = 0;
    for (j=0;j<i;j++)
        odchylka += (pole[j]-prumer)*(pole[j]-prumer);
    // rozptyl
    rozptyl = odchylka/i;
    odchylka = sqrt(rozptyl);
   
    // vypis
    printf("Minimum:  %d\n", min);
    printf("Maximum:  %d\n", max);
    printf("Prumer:   %f\n", prumer);
    printf("Median:   %f\n", median);
    printf("Odchylka: %f\n", odchylka);
    printf("Rozptyl:  %f\n", rozptyl);
    free(pole);
    return 0;
}

_________________
Pokud potřebujete něco s PHP/MySQL/C/C++ apod. neváhejte a napište mi.


Nahoru
 Profil  
 
 PříspěvekPředmět příspěvku: Re: program v C, odměna jistá
Napsal: 14.12.11 00:11 
Offline
Uživatelský avatar

Registrován: 03.09.08 19:11
Příspěvky: 379
Bydliště: The City of Skalica
díky, kód je dobrej, jen bych ješte potřeboval ošetřit aby vědel načíst i desetinná čísla (teď když narazí na des. číslo tak hodí prázdnou konzoly)

cislo, min a max jsem deklaroval misto int jako float, teď to program "překousne" ale ve výsledku se stále zobrazují jen jako celá čísla.
jediné co mě napadá, že by mělo pole problém s des. číslem?

_________________
Lidi, seberealizujte se!


Nahoru
 Profil  
 
 PříspěvekPředmět příspěvku: Re: program v C, odměna jistá
Napsal: 14.12.11 10:23 
Offline
Uživatelský avatar

Registrován: 22.08.08 23:31
Příspěvky: 250
to by vypadalo zase nějak takhle
Kód:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

void bubbleSort(int * array, int size)
{
    int i, j;
    for (i = 0; i < size - 1; i++)
    {
        for (j = 0; j < size - i - 1; j++)
        {
            if(array[j+1] < array[j])
            {
                int tmp = array[j + 1];
                array[j + 1] = array[j];
                array[j] = tmp;
            }
        }
    }
}

int main()
{
    FILE * soubor;
    int i = 0, j;
    float cislo, min, max, median, prumer, odchylka, rozptyl;
    float * pole = NULL;
    float * tmp  = NULL;
    soubor = fopen("cisla.txt", "r");
    if (soubor == NULL)
    {
        printf("Nepodarilo se otevrit soubor cisla.txt\n");
        return 1;
    }
    while (fscanf(soubor, "%f\n", &cislo) != EOF)
    {
        tmp = (float*) realloc(pole, (++i)*sizeof(float));
        if (tmp == NULL)
        {
            printf("Dosla pamet\n");
            free(pole);
            return 1;
        }
        else
        {
            pole      = tmp;
            pole[i-1] = cislo;
        }
    }
    fclose(soubor);
    if (i < 2)
    {
        printf("Nebylo nacteno dost cisel\n");
        free(pole);
        return 1;
    }
    bubbleSort(pole, i); // serazeni bubble sortem kvuli medianu
    // median
    if (i % 2 == 0)
        median = (float) ((pole[i/2]+pole[(i/2)+1])/2);
    else
        median = (float) pole[(i/2)+1];
    // min a max
    min = pole[0];
    max = pole[i-1];
    // prumer
    prumer = 0;
    for (j=0;j<i;j++)
        prumer += pole[j];
    prumer /= i;
    // smerodatna odchylka
    odchylka = 0;
    for (j=0;j<i;j++)
        odchylka += (pole[j]-prumer)*(pole[j]-prumer);
    // rozptyl
    rozptyl = odchylka/i;
    odchylka = sqrt(rozptyl);
   
    // vypis
    printf("Minimum:  %f\n", min);
    printf("Maximum:  %f\n", max);
    printf("Prumer:   %f\n", prumer);
    printf("Median:   %f\n", median);
    printf("Odchylka: %f\n", odchylka);
    printf("Rozptyl:  %f\n", rozptyl);
    free(pole);
    return 0;
}

btw. nezkoušel sem to zkompilovat, takže případně napiš jestli tam něco blbne

_________________
Pokud potřebujete něco s PHP/MySQL/C/C++ apod. neváhejte a napište mi.


Nahoru
 Profil  
 
 PříspěvekPředmět příspěvku: Re: program v C, odměna jistá
Napsal: 14.12.11 10:48 
Offline
Uživatelský avatar

Registrován: 03.09.08 19:11
Příspěvky: 379
Bydliště: The City of Skalica
vypadá to bez problému, opět díky :wink:

_________________
Lidi, seberealizujte se!


Nahoru
 Profil  
 
Zobrazit příspěvky za předchozí:  Seřadit podle  
Odpovědět na téma  [ Příspěvků: 24 ] 

Všechny časy jsou v UTC + 1 hodina


Kdo je online

Uživatelé procházející toto téma: Žádní registrovaní uživatelé a 0 návštevníků


Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Hledat:
Přejít na:  
cron
Powered by phpBB® Forum Software © phpBB Group

Český překlad – phpBB.cz
phpBB SEO
[ Time : 0.284s | 17 Queries | GZIP : On ]