Úlohy v jazyce C – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Úlohy v jazyce C – C / C++ – Fórum – Programujte.comÚlohy v jazyce C – C / C++ – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené.
micha4074740
Newbie
20. 8. 2012   #1
-
0
-

Dobrý den

Začínám se učit jazyk C a zkouším si cvičné úlohy zde a prosím o kontrolu a doporůčení nějaké stránky kde se tyto podobné cvičné úlohy nacházely.    Děkuji
Př:
Ve výrobní dávce je 10 výrobků. Jejich hmotnost je zapsána pod sebou v souboru hmotnost.txt  .Správný výrobek má hmotnost 100g+-1g
Spočítej kolik výrobků je v dávce mimo povolenou toleranci a výsledek nech zapsat do souboru vysledek.txt

void setup
{
float hmotnost;
int pocet=0;
fopen (C:\hmotnost.txt,r)
const int minimalhmotnost=99;
const int maximumhmotnost=101;
if(hmotnost<minimalhmotnost)pocet++;
if (hmotnost>maximumhmotnost)pocet++;
pocet=fopen (C:vysledek.txt,w);
} 

př:

Funkce napetibaterie vypočítá z voltmetru napětí na baterii.
Toto napetí se odebírá každou minutu.
Předpokladem je ,že napětí při nabíjení stále stoupá. Jakmile napětí poklesne je baterie nabitá.
Spočítejte kolik minut nabíjení trvalo

void lop{
float napětí,prednapetí;
int minuty;
napětínabateri=napetí
prednapetí=0;
while (napetí>prednaúpetí)

delay 60000
prednapetí=napětí
for (minuty=0;napetí>prednapetí;minuty++)
}


Nahlásit jako SPAM
IP: 213.180.37.–
KIIV
~ Moderátor
+43
God of flame
20. 8. 2012   #2
-
0
-

muzes pouzit i ulohy co sou sice pro pascal ale to vubec nevadi:

http://www.isd.cz/pascal/8ulohy.html

jinak lekce 1:  nauc se odsazovani, neumis si ani predstavit to peklo, kdyz mas tisic radku kodu, a ani naznak odsazeni, nebo sou tam smichany tabulatory s mezerama... ja pouzivam 2 mezery a jeste pro hromadu zanoreni to stale neni posunuty nekam za roh monitoru az do afriky

lekce 2:  C ti nedovoli diakritiku v promennych!!!  umi to leda tak PHP .. v nicem jinym sem to nevidel (kdo se s tim setkal jeste jinde doplni)

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
KIIV
~ Moderátor
+43
God of flame
20. 8. 2012   #3
-
0
-

a ted ke kodu: jen si to zkus zkompilovat.. nemuze a nebude to fungovat

void setup {
  float hmotnost;
  int pocet=0;

  fopen (C:\hmotnost.txt,r)  // nezkompilujes ani nahodou.. chce to najit pojem "retezce znaku C" v google
  const int minimalhmotnost=99;
  const int maximumhmotnost=101;
  if(hmotnost<minimalhmotnost)pocet++; // dejme tomu, az na to ze v hmotnost neni inicializovana a je tam nahodna hodnota
  if (hmotnost>maximumhmotnost)pocet++; // to same
  // i kdybys nahodou dostal hodnotu do hmotnost, dopocitas se maximalne do 1 - kod se totiz nijak neopakuje

  // a i kdyby se pocitalo, stejne si to premazes hodnotou filedescriptoru co vraci fopen... 
  pocet=fopen (C:vysledek.txt,w);
}
Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
micha4074740
Newbie
20. 8. 2012   #4
-
0
-

tady sem to skusil opravit

void setup {
  float hmotnost;
  int pocet=0;
  const int minimalhmotnost=99;
  const int maximumhmotnost=101;

  do {
  char string[10]= fopen (C:\hmotnost.txt,r);
  if (hmotnost<minimalhmotnost)pocet++;
  if (hmotnost>maximumhmotnost)pocet++;
  while (homotnost<>1500) }                     // <> =nevím jak se píše nesmí rovnat,hodnotu 1500 napíšu do hmotnost.txt jako poslední
  zapiš výsledek do vysledek.txt               // jak zapsat výsledek? Na to sem nepřišel
  while (hmotnost=1500)
  pocet--;                                     // přidáním hodnoty 1500 vznikne jeden špatný kus navíc tak ho musíme hnet ubrat
Nahlásit jako SPAM
IP: 213.180.37.–
host
~ Anonymní uživatel
17 příspěvků
20. 8. 2012   #5
-
0
-

nerovnost je !=

Nahlásit jako SPAM
IP: 88.102.250.–
TheOndrap
~ Anonymní uživatel
305 příspěvků
20. 8. 2012   #6
-
0
-

jenom bych ti rád řekl .. TOHLE JE CESTA  DO PEKLA. takhle se nic nenaučíš. Využij nějakou knížku, kde se probírají krok za krokem programový konstrukce, kde jsou ověřený "učící" postupy.

Já jsem sice třeba taky zastánce učení "on fly", ale to chce mít už nějaký základy. Příklad: Umím v C, Javě a když sem měl začít dělat v C#, tak sem se to už neučil od začátku ale za letu. Nicméně mi věř, že naučit se pořádně základy se ti časem 100% vrátí.

Nahlásit jako SPAM
IP: 88.102.250.–
20. 8. 2012   #7
-
0
-

#4 micha407474
co ti napsal překladač na
 

char string[10]= fopen (C:\hmotnost.txt,r);

??

hu

Nahlásit jako SPAM
IP: 195.178.67.–
KIIV
~ Moderátor
+43
God of flame
20. 8. 2012   #8
-
0
-

odkud vlastne beres ty zapisy co tu pouzivas?

a proc to nezkusis zkompilovat a pustit? psat to naslepo je i pro pokrocilejsiho programatora narocny...

do { // do while vypada zase jinak

} while (podminka);

retezec:  "retezec" ...  napriklad:   FILE * f = fopen("soubor.txt","r");

jak sem naznacil v predchozim radku tak fopen nic nenacita!!!!! jen otevre soubor a vrati neco, co pouzijes v dalsich prikazech k nacteni hodnot 

na nacitani jsou funkce jako  scanf, ...

pocet nemusi byt nutne +1 .-.. scanf necha parametr, do ktereho se nacitaji data, v pripade neuspechu NEZMENENY!! takze to bude fungovat pokud predchozi bude mimo rozsah jinak ne!

....

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
reciproke0
Návštěvník
20. 8. 2012   #9
-
0
-

#4 micha407474
Tohle je nanic sem psát zda je to správně si to zkus skompilovat a spustit, pak uvidíš.

Každopádně by jsi se měl pořádně naučit syntaxi a základní příkazy. Až pak když narazíš na něco co nevíš jak či ti něco nepůjde, tak se ptej.

Nahlásit jako SPAM
IP: 82.208.4.–
KIIV
~ Moderátor
+43
God of flame
20. 8. 2012   #10
-
0
-

#6 TheOndrap
jo mel by zacit tema snadnejsima ulohama treba prave ze sbirky uloh jak sem tu na zacatku poslal...

startovat na souborech je neco jako snazit se chodit po lane a pritom neumet vubec chodit

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
TheOndrap
~ Anonymní uživatel
305 příspěvků
20. 8. 2012   #11
-
0
-

#10 KIIV
:D To dej vytesat do kamene :)

Nahlásit jako SPAM
IP: 88.102.250.–
AB
~ Anonymní uživatel
41 příspěvků
2. 10. 2021   #12
-
0
-

#6 TheOndrap
Nelze než souhlasit. Konkrétně jazyk C je kvůli jeho záludnosti třeba poznávat pomalu a podrobně, nikoli jednotlivé kapitoly uspěchat a snažit se stavět na hliněných nohách. Pro úplného začátečníka by byl vhodnější jiný jazyk (Python, PHP, JavaScript, C#), kde je možné klást větší důraz na samotnou algoritmizaci, netrávit spoustu času nad základními kameny a "někam se dopracovat". Jak široká problematika se v C týká třeba textu - formátovací řetězce, ukončovací znak, ukazatele, správa paměti...

Jen tak pro představu, možná produkční podoba daného programu s ošetřením výjimek (za naprostou bezchybnost stejně neručím, jelikož jsem jen trochu pokročilejší student než autor vlákna) :) :

#include <stdio.h>
#define SOUBOR_FR "hmotnost.txt"
#define SOUBOR_FW "vysledek.txt"
#define NORMA 100.0
#define TOLERANCE 1

int main()
{
  int
    main_return = 0, /* návratová hodnota fce main */
    pocet_spravne = 0,
    pocet_hodnot = 0;
  double
    nactena_hodnota = 0;
  FILE
    *fr, /* soubor pro čtení hodnot */
    *fw; /* soubor pro zápis výsledku */
  
  fr = fw = NULL;

  /* otevření souborů */
  if ((fr = fopen(SOUBOR_FR, "r")) == NULL) {
    fprintf(stderr, "Nepodařilo se otevřít soubor \"%s\".\n",
            SOUBOR_FR);
    return 1;
  }
  if ((fw = fopen(SOUBOR_FW, "w")) == NULL) {
    fprintf(stderr, "Nepodařilo se otevřít soubor \"%s\".\n",
            SOUBOR_FW);
    if (fclose(fr) == EOF)
      fprintf(stderr, "Nepodařilo se uzavřít soubor \"%s\".\n",
              SOUBOR_FR);
    return 1;
  }

  /* počítání správných kusů */
  while (feof(fr) == 0) {
    if (fscanf(fr, " %lf g\n", &nactena_hodnota) == 1) {
      pocet_hodnot++;
      if (nactena_hodnota >= NORMA - TOLERANCE
          && nactena_hodnota <= NORMA + TOLERANCE) {
        pocet_spravne++;
      }
    }
    else
      fprintf(stderr, "Chyba při čtení hodnoty...\n");
  }
  /* zápis výsledku do souboru */
  if (fprintf(fw, "%d\n", pocet_hodnot - pocet_spravne) < 0)
    fprintf(stderr, "Nepodařilo se zapsat výsledek do souboru \"%s\".\n",
            SOUBOR_FW);

  /* uzavření souborů */
  if (fclose(fr) == EOF) {
    fprintf(stderr, "Nepodařilo se uzavřít soubor \"%s\".\n",
            SOUBOR_FR);
    main_return = 1;
  }
  if (fclose(fw) == EOF) {
    fprintf(stderr, "Nepodařilo se uzavřít soubor \"%s\".\n",
            SOUBOR_FW);
    main_return = 1;
  }

  return main_return;
}
Nahlásit jako SPAM
IP: 2a00:102a:4003:e938:61dd:a1a4:7543:392a...–
2. 10. 2021   #13
-
0
-

#12 AB
Uvážil jsi jaký smysl má reakce na 9 let starý příspěvek?

hu

Nahlásit jako SPAM
IP: 193.86.81.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 85 hostů

Podobná vlákna

Úlohy — založil ukulele

Slovní úlohy — založil Petr

Náročnost úlohy — založil Figa

Navrh ulohy — založil newo

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý