Matematické Fórum

Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.

Nástěnka
22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.

Nejste přihlášen(a). Přihlásit

#1 17. 05. 2009 20:22

Crovn
Příspěvky: 62
Reputace:   
 

Potřebuji udělat 3 příklady HELP :(

Zdravim, potřeboval bych napsat 3 úkoly v C, vůbec v tom neumim, ale musím je mít odevzdaný kvůli zápočtu byl bych moc rád.

1 úkol)Napište program, který přečte 3 reálná čísla ze vstupu pomocí funkce scanf, a  vypíše (pomocí printf ) tyto hodnoty i jejich aritmetický průměr. Zvolte vhodné formáty pro tisk.

2 úkol)Napište program, který vypočte faktoriál.
    Načtěte číslo n a zkontrolujte, je-li v intervalu 1 až 15.
    Cyklus udělejte pomocí cyklu for, nebo i jinak. Výsledek zobrazte na obrazovce. Všechny proměnné budou long int.

3úkol)Napište program, který v cyklu while pomocí funkce getchar() (ve výrazu podmínky) přečte znak, převede ho na velké písmeno (zjistí, je-li znak v intervalu malých písmen, tj. 'a' až 'z', převede ho na velké, tj. odečte od hodnoty znaku číslo dané rozdílem ('a'-'A'). Výstup znaku bude proveden funkcí putchar(). Alternativně můžete použít funkcí islower() pro test a toupper() pro převod.
    Takto se budou číst a převádět v cyklu další znaky ze vstupu, dokud nenarazí na znak velké Q. Poté skončí a napíše text, že bylo nalezeno písmeno Q.

Byl bych moc rád kdyby někdo pomohl.

Offline

 

#2 17. 05. 2009 21:10

gladiator01
Místo: Jindřichův Hradec
Příspěvky: 1587
Škola: ZČU FAV - SWI
Pozice: absolvent
Reputace:   53 
Web
 

Re: Potřebuji udělat 3 příklady HELP :(

Co kdyby jsi se nejdřív pokusil sám a dal jsem kód, někdo ti ho zkontroluje. Nic těžkého to není, všechny tři ty úkoly jsou tak na pět minut.
Zkus alespoň ten první.


Naděje jako svíce jas, potěší srdce štvané, čím temnější je noční čas, tím zářivěji plane.
VIVERE - MILITARE EST (Seneca)
Vím, že nic nevím. - Sokrates

Offline

 

#3 17. 05. 2009 21:27

Crovn
Příspěvky: 62
Reputace:   
 

Re: Potřebuji udělat 3 příklady HELP :(

Mno tak jediný co mam je příklad z  úplně prvního týdne v semestru což je

1 úkol)Napište program, který provede pomocí příkazu for součet  řady čísel 1, 2, 3, 4, 5

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

int main ()

{int cislo,sum;

   for (cislo=1, sum=0; cislo<=5; cislo++)
   sum+=cislo;
printf("Soucet  je %d \n", sum);

system ("PAUSE");
return 0;
}

To je tak vše co umim, C je pro mě špaňelská vesnice :(

Offline

 

#4 17. 05. 2009 21:53

gladiator01
Místo: Jindřichův Hradec
Příspěvky: 1587
Škola: ZČU FAV - SWI
Pozice: absolvent
Reputace:   53 
Web
 

Re: Potřebuji udělat 3 příklady HELP :(

Ta jednička je přece něco podobného.

Code:

//************************************************//
// 1 úkol)Napište program, který přečte 3 reálná 
// čísla ze vstupu pomocí funkce scanf, a  vypíše 
//(pomocí printf ) tyto hodnoty i jejich aritmetický
// průměr. Zvolte vhodné formáty pro tisk.          
//************************************************//

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

int main()
{
    int cislo=0, i=0;
    double prumer=0,sc=0;
    printf("zadejte tri realna cisla: ");
    for(i=0; i<3; i++)
    {
       scanf("%i",&cislo);
       printf("%i ",cislo);
       sc=sc+cislo;
       prumer =sc/3;
    }
    printf("\nPrumer: %g \n\n", prumer);
        
    system("pause");
    return 0;
}

Naděje jako svíce jas, potěší srdce štvané, čím temnější je noční čas, tím zářivěji plane.
VIVERE - MILITARE EST (Seneca)
Vím, že nic nevím. - Sokrates

Offline

 

#5 17. 05. 2009 22:03

Crovn
Příspěvky: 62
Reputace:   
 

Re: Potřebuji udělat 3 příklady HELP :(

Mno díky moc, zkusim ten faktorial a dam sem co jsem sesmolil :)

Offline

 

#6 17. 05. 2009 22:14

Crovn
Příspěvky: 62
Reputace:   
 

Re: Potřebuji udělat 3 příklady HELP :(

Mno tak sem davam ten faktorial samozrejme je to nefunkcni :D

#include <stdio.h>
int main(void)
{long int
           fakt = 1,            /* hodnota faktorialu */
           i;

  printf("Zadej stupen faktorialu: ");
  scanf("%ld");

  for (i=0; i<15; i++) {
    fakt *= i;
  }
  printf("\Faktorial cisla %2ld je %15ld\" fakt);
system("PAUSE");
return 0;
}

Offline

 

#7 17. 05. 2009 22:24

Crovn
Příspěvky: 62
Reputace:   
 

Re: Potřebuji udělat 3 příklady HELP :(

Mno pak tu mám ještě čtvrtý příklad :Napište program, který nadefinuje 2D matici o max. rozměru 6x6. Horní trojúhelníkovou matici naplňte náhodně vygenerovanými čísly z intervalu 1-50 a matici vytiskněte s využitím bezparametrového podprogramu TISK(), který nejprve nadefinujete a pak v hlavním programu main() vyvoláte.
Pořadí definice programových jednotek ve zdrojovém souboru .C bude napřed podprogram TISK(), poté hlavní program main().
Všechny potřebné proměnné včetně matice budou definovány globálně

Jediné co bych tušil jak se dělá je ta matice 6*6 v inervalu 1-50, pak dál je to jaksi mimo moje chápání :)

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

int main(void)
{
int i, j, k, n, matice[6][6] , nahodna cisla[50];

do
{
  printf("Zadejte rozmer ctvercove matice: "); scanf("%d",&n);
}
while (n < 2 || n>6);

for(i=1;i<=n;i++)
  for (j=1;j<=n;j++)
  {
      matice[i-1][j-1] = rand()%21;
      k++;
  }

for(i=1;i<=n;i++)
  {
   for (j=1;j<=n;j++)
      printf("%7d\t",matice[i-1][j-1]);
   printf("\n");
  }
  system("PAUSE");
return 0;
}

Offline

 

#8 17. 05. 2009 23:00 — Editoval gladiator01 (17. 05. 2009 23:07)

gladiator01
Místo: Jindřichův Hradec
Příspěvky: 1587
Škola: ZČU FAV - SWI
Pozice: absolvent
Reputace:   53 
Web
 

Re: Potřebuji udělat 3 příklady HELP :(

scanf má tvar scanf("%d", &nazev_promenne); ne scanf("%d");
když chceš napsat zpětné lomítko tak musíš napsat dvět \\ aby se ti vypsalo.

Code:

//************************************************//
//2 úkol)Napište program, který vypočte faktoriál.
//  Načtěte číslo n a zkontrolujte, je-li v intervalu 1 až 15.
// Cyklus udělejte pomocí cyklu for, nebo i jinak. 
//  Výsledek zobrazte na obrazovce. Všechny proměnné budou long int.          
//************************************************//


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

int main(void)
{
    long int n,i;
    long int factorial=1; 
    do
    {
      printf("zadej cislo pro factorial: ");  
    
       scanf("%ld", &n);
    }
    while(n>15 || n<1 );
    for(i=1;i<=n; i++) 
        factorial=i*factorial;
    printf("\n %ld\n\n", factorial);
    
    system("pause");
    return 0;  
}

Naděje jako svíce jas, potěší srdce štvané, čím temnější je noční čas, tím zářivěji plane.
VIVERE - MILITARE EST (Seneca)
Vím, že nic nevím. - Sokrates

Offline

 

#9 17. 05. 2009 23:17

Crovn
Příspěvky: 62
Reputace:   
 

Re: Potřebuji udělat 3 příklady HELP :(

Ehm netušil bys jakby se dodělal ten program s tou maticí a ten 3. úkol?

Offline

 

#10 17. 05. 2009 23:56 — Editoval gladiator01 (18. 05. 2009 00:00)

gladiator01
Místo: Jindřichův Hradec
Příspěvky: 1587
Škola: ZČU FAV - SWI
Pozice: absolvent
Reputace:   53 
Web
 

Re: Potřebuji udělat 3 příklady HELP :(

Zítra se na to podívám, ale jen proto, že nejsem zvyklá někomu odmítat pomoc. Ale jestli máš ještě nějakej tak máš smůlu, mám své práce dost.
(má to taky výhodu, alespoň si zopakuju základy céčka)


Naděje jako svíce jas, potěší srdce štvané, čím temnější je noční čas, tím zářivěji plane.
VIVERE - MILITARE EST (Seneca)
Vím, že nic nevím. - Sokrates

Offline

 

#11 18. 05. 2009 00:42

Crovn
Příspěvky: 62
Reputace:   
 

Re: Potřebuji udělat 3 příklady HELP :(

Mno díky moc za pomoc :)

Offline

 

#12 18. 05. 2009 13:38

gladiator01
Místo: Jindřichův Hradec
Příspěvky: 1587
Škola: ZČU FAV - SWI
Pozice: absolvent
Reputace:   53 
Web
 

Re: Potřebuji udělat 3 příklady HELP :(

třetí příklad:

Code:

//************************************************//
//3 úkol)
//Napište program, který v cyklu while 
//pomocí funkce getchar() (ve výrazu podmínky) 
//přečte znak, převede ho na velké písmeno 

//(zjistí, je-li znak v intervalu malých písmen, 
//tj. 'a' až 'z', převede ho na velké, tj. odečte 
//od hodnoty znaku číslo dané rozdílem ('a'-'A').

//Výstup znaku bude proveden funkcí putchar(). 
//Alternativně můžete použít funkcí islower() 
//pro test a toupper() pro převod.

//Takto se budou číst a převádět v cyklu další znaky 
//ze vstupu, dokud nenarazí na znak velké Q.
// Poté skončí a napíše text, že bylo nalezeno písmeno Q.
//************************************************//

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

int main(void)
{    
    char znak;
    int  i=0;
    printf("Zadej znaky (pro konec stiskni Q):\n");
    while(znak!='Q')
    {
      znak=getchar();
      if(islower(znak))
      {    
         printf("\t"); 
         znak=toupper(znak);
         putchar(znak);
      }
      else
      {
         printf("\t");
         putchar(znak);
      }
    }
    if(znak=='Q')
       printf("\nbylo nalezeno pismeno Q\n"); 
      
    system("PAUSE");
    return 0;
}

Naděje jako svíce jas, potěší srdce štvané, čím temnější je noční čas, tím zářivěji plane.
VIVERE - MILITARE EST (Seneca)
Vím, že nic nevím. - Sokrates

Offline

 

#13 18. 05. 2009 14:21

gladiator01
Místo: Jindřichův Hradec
Příspěvky: 1587
Škola: ZČU FAV - SWI
Pozice: absolvent
Reputace:   53 
Web
 

Re: Potřebuji udělat 3 příklady HELP :(

prostuduj si ty příklady a napiš kdyby jsi něčemu nerozuměl.

Code:

//Napište program, který nadefinuje 2D matici o max. rozměru 6x6. 
//Horní trojúhelníkovou matici naplňte náhodně vygenerovanými čísly 
//z intervalu 1-50 a matici vytiskněte s využitím bezparametrového 
//podprogramu TISK(), který nejprve nadefinujete a pak v hlavním programu main()
// vyvoláte.
//Pořadí definice programových jednotek ve zdrojovém souboru .C bude napřed 
//podprogram TISK(), poté hlavní program main().
//Všechny potřebné proměnné včetně matice budou definovány globálně

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

int i=0, j=0,n=6, matice[6][6]; //globální deklarace proměnných
void tisk() // tisk matice
{
  for(i=1;i<=n;i++)
  {
   for (j=1;j<=n;j++)
      printf("%7d\t",matice[i-1][j-1]);
   printf("\n");
  }  
    
}

int main(void)
{
  for (i=1;i<=n;i++)
  { 
    for (j=1;j<=n;j++)
    {
      if(j==i || j>i ) //test zda je naplňované místo v horní části matice
        matice[i-1][j-1] = rand()%50+1;
      else
        matice[i-1][j-1] = 0;
    }
  }
  tisk();
  system("PAUSE");
return 0;
}

Naděje jako svíce jas, potěší srdce štvané, čím temnější je noční čas, tím zářivěji plane.
VIVERE - MILITARE EST (Seneca)
Vím, že nic nevím. - Sokrates

Offline

 

#14 18. 05. 2009 19:03

Crovn
Příspěvky: 62
Reputace:   
 

Re: Potřebuji udělat 3 příklady HELP :(

Mno ještě jeden příklad dostaneme tento týden, pokusim se ho dát dohromady sám než sem něco napíšu :)

Offline

 

#15 19. 05. 2009 16:02

gladiator01
Místo: Jindřichův Hradec
Příspěvky: 1587
Škola: ZČU FAV - SWI
Pozice: absolvent
Reputace:   53 
Web
 

Re: Potřebuji udělat 3 příklady HELP :(

Můžu se zeptat co studuješ že tam máte tak lehké programování?


Naděje jako svíce jas, potěší srdce štvané, čím temnější je noční čas, tím zářivěji plane.
VIVERE - MILITARE EST (Seneca)
Vím, že nic nevím. - Sokrates

Offline

 

#16 19. 05. 2009 18:21

Crovn
Příspěvky: 62
Reputace:   
 

Re: Potřebuji udělat 3 příklady HELP :(

FELku na ZCU v Plzni, ty ukoly byli akorat za praci navic jinak ulohy co delame je něco jako

Napište program, který do souboru „vystup.csv“ uloží vypočtené hodnoty funkcí cos(x), x20, ex (v C => funkce cos, pow(x,20.0), exp(x) ) pro x vygenerované náhodně (malá nápověda: v C je funkce rand() ) v intervalu od -5 do 5. Počet generovaných hodnot zadá uživatel z klávesnice. Ošetřete, že nebude akceptován počet větší než 30 a menší než 4.
Funkce cos v C počítá s radiány, proto x (stupně) převeďte na radiány podle vzorce radiany=3.1415926/180 * stupne. Výstupní soubor bude textový, ve formátu .csv – tj. hodnoty oddělené středníkem. V každém řádku budou čtyři hodnoty(x, cos(x), x20, ex). Desetinná čísla však budeme chtít rozdělit tak, že celá část bude v jednom sloupci a desetinná ve druhém, proto před uložením řádku do souboru, desetinné tečky nahraďte v číslech středníky. (Zde malá nápověda: C to samo neumí, musíte naprogramovat, vzpomeňte na funkce pro tisk do řetězce.)
Název souboru můžete zadat v programu napevno. Nezapomeňte uvést deklarace všech použitých proměných a ošetřit případy chybného otevření a zavření souboru.
V programu vytvořte dynamické dvourozměrné pole typu double, mající potřebný řádek a tři sloupce – pro uložení x, cos(x) a ex. Do pole uložte vypočtené hodnoty a potom je z tohoto pole vytiskněte po řádkách na obrazovku. Nezapomeňte na likvidaci dynamického pole při ukončení programu.
Program musí vedle funkce main, obsahovat ještě alespoň dvě Vaše funkce s parametrem a návratovou hodnotou. (převod stupňů na radiány, generování náhodných čísel).

Tohle napsat nechci :D
Jinak primarne delame v Matlabu, coz je s cyklama trochu stejne ale oproti C ten matlab chapu :)

Offline

 

#17 19. 05. 2009 18:53 — Editoval gladiator01 (19. 05. 2009 19:07)

gladiator01
Místo: Jindřichův Hradec
Příspěvky: 1587
Škola: ZČU FAV - SWI
Pozice: absolvent
Reputace:   53 
Web
 

Re: Potřebuji udělat 3 příklady HELP :(

Není to spíš tím, že tě c nebaví a matlab jo? U mě to je tak třeba s phpčkem.

Nevím co je na tom nepochopitelného.  Prostě se musíš naučit používat ty základní konstrukce (??) a potom používat mozek. (neber to osobně, mnozí lidé ho používat neumějí nebo nechtějí).


Naděje jako svíce jas, potěší srdce štvané, čím temnější je noční čas, tím zářivěji plane.
VIVERE - MILITARE EST (Seneca)
Vím, že nic nevím. - Sokrates

Offline

 

#18 19. 05. 2009 19:40

jardasmid
Příspěvky: 65
Reputace:   
 

Re: Potřebuji udělat 3 příklady HELP :(

↑ gladiator01:

Code:

...
    char znak;
    int  i=0;
    printf("Zadej znaky (pro konec stiskni Q):\n");
    while(znak!='Q')
    {
      znak=getchar();
      if(islower(znak))
...

Špatně, není zaručeno, že "znak" na začátku nebude zrovna 'Q'. funkce getchar(), putchar(), islower(), toupper() pracují s intem, né charem. Lepší řešení je:

Code:

int znak;
while ((znak = getchar()) != EOF && znak != 'Q')
{
  ...
}

Pak místo printf("\t") stačí mnohem rychlejší putchar('\t'). printf zbytečně parsuje řetězec.

Je tam zbytečná proměnná "i" :-) Ještě, že s ní neindexujete v poli. Používat int na indexování je totiž čuňárna největšího kalibru. K tomu je většinou ptrdiff_t a size_t, které jsou stejně veliké jako ukazatel (int není vždy stejně velký jako ukazatel!). BTW size_t vrací operátor sizeof (neznamínkový typ), ptrdiff_t je rozdíl 2 ukazatelů (znaménkový).




a ještě k tomu výše s faktoriálem, to jsem nezkoumal, ale je tam "long int". Mít na paměti, že
sizeof(short) <= sizeof(int) <= sizeof(long)

pokud chcete typy určité velikosti, doporučuji int8_t, int16_t, int32_t, int64_t popř. int128_t s neznaménkovými variantami s "u" na začátku. Jsou v souboru stdint.h nebo inttypes.h u každé slušné c knihovny (takže visual studio je postrádá :-))

A moje komentáře neberte špatně, snažím se pomoct a aby tu nebyli programátoři prasata, jako je adobe, které né a né vydat 64bit flash plugin pro Windows (určitě tam přetypovávali ukazatele na int a proto jim to nefunguje :-))

Offline

 

#19 19. 05. 2009 21:55 — Editoval gladiator01 (19. 05. 2009 22:07)

gladiator01
Místo: Jindřichův Hradec
Příspěvky: 1587
Škola: ZČU FAV - SWI
Pozice: absolvent
Reputace:   53 
Web
 

Re: Potřebuji udělat 3 příklady HELP :(

nebuť takový puntičkář - každej ten příklad jsem měla hotovej tak za pět minut  - hlavně, že to funguje.
ten typ long int byl v zadání, proto tam je
ptrdiff_t a size_t - neznám
s tím typem u znaku a cyklem while souhlasím - odflákla jsem to


Naděje jako svíce jas, potěší srdce štvané, čím temnější je noční čas, tím zářivěji plane.
VIVERE - MILITARE EST (Seneca)
Vím, že nic nevím. - Sokrates

Offline

 

#20 24. 05. 2009 18:02

Crovn
Příspěvky: 62
Reputace:   
 

Re: Potřebuji udělat 3 příklady HELP :(

Tak tady je poslední příklad ze semestru:
Napište program, který vyplní 2D pole obsahem tabulky se sloupci:
    uhel       cos(x)      sin(x)      log(x)
    pro hodnoty úhlu od 90◦ do 180◦ po 10 ◦ . Nejprve nadefinujte matici jako statické 2D pole desetinných čísel :
        float matice[50][4] ;
    a spočítejte počet řádků této matice (180-90)/10 , poté v cyklu matici naplňte hodnotami z tabulky a nakonec v cyklu tabulku vytiskněte.Převod stupňů na radiany realizujte vlastní nadefinovanou funkcí.

Jedinné co bych tak věděl je nadefinovat tu matici ale vyplnit ji tema vysledkama s tim nic nvm :(

Offline

 

#21 25. 05. 2009 18:46

gladiator01
Místo: Jindřichův Hradec
Příspěvky: 1587
Škola: ZČU FAV - SWI
Pozice: absolvent
Reputace:   53 
Web
 

Re: Potřebuji udělat 3 příklady HELP :(

je to stejny jako u té předchozí matice
do sloupce, který má označení n,0 (n=0,1,...,10) vytiskneš úhly, do n,1 (n=0,1,...,10)  cos(x), atd

http://forum.matweb.cz/upload/894-Untitled-1.jpg


Naděje jako svíce jas, potěší srdce štvané, čím temnější je noční čas, tím zářivěji plane.
VIVERE - MILITARE EST (Seneca)
Vím, že nic nevím. - Sokrates

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson