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 26. 12. 2018 16:33

Zoufalec38
Příspěvky: 33
Reputace:   
 

Určení počet kladných a záporných hodnot v zadaném poli z klávesnice-C

/* Definujte pole realnych cisel s nazvem INTERVAL. rozmer pole RP nactete z klavesnice. Pomoci cyklu umoznete zadat
Vsechny slozky pole. Do textoveho souboru ROZBOR.TXT zapiste informaci o poctu kladnych a zapornych cisel v tomto poli*/

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

int main() {

    int RP, i, kladne, zaporne,k;
    float* INTERVAL;

    printf ("Zadejte pocet slozek RP: ");
    scanf ("%d", &RP);

    INTERVAL = (float*) malloc(RP * sizeof(float));
    for (i = 0; i < RP; i++) {
        printf ("Zadejte %d. slozku INTERVALU \n",i);
        scanf ("%f", &INTERVAL[i]);
    }

    for (i = 0; i < RP; i++) {
        printf("%f ", INTERVAL[i]);
    }

   
   while(i>0){
      kladne = 1;
      kladne++;
  if(kladne>RP);
  break;
   }
      printf("Pocet kladnych slozek je:%d",kladne);
       
       
   return 0;
   }

Zdravím, mám problém s posledním cyklem, který by měl vypsat počet kladných složek v poli. Uvědomuju si, že tam mám momentálně asi hloupost, ale je jen jeden z mnoha pokusů z cykly whlie a for. Ve většině případů buĎ proběhne jen jeden cyklus, nebo nekonečně mnoho. Díky za rady.

Offline

 

#2 26. 12. 2018 17:10

edison
Příspěvky: 2622
Reputace:   47 
 

Re: Určení počet kladných a záporných hodnot v zadaném poli z klávesnice-C

Mě od pohledu nedává smysl třeba while(i>0), když uvnitř není nic co by měnilo i. To pak buď neproběhne, nebo běží do nekonečna.

Offline

 

#3 26. 12. 2018 17:12

edison
Příspěvky: 2622
Reputace:   47 
 

Re: Určení počet kladných a záporných hodnot v zadaném poli z klávesnice-C

Jo a v témže cyklu:
if(kladne>RP);

if vyhodnotí podmínku, ale nic to neovlivní, protože je jeho blok ukončen.

Offline

 

#4 26. 12. 2018 17:12

Zoufalec38
Příspěvky: 33
Reputace:   
 

Re: Určení počet kladných a záporných hodnot v zadaném poli z klávesnice-C

Já vím, že je to asi blbost, ale to už byl atkový psolední pokus

Offline

 

#5 26. 12. 2018 18:57

edison
Příspěvky: 2622
Reputace:   47 
 

Re: Určení počet kladných a záporných hodnot v zadaném poli z klávesnice-C

Doporučuji to prostě projít for cyklem jako v předchozích případech a spočítat ta čísla. V čem je problém?

Offline

 

#6 26. 12. 2018 19:18

Zoufalec38
Příspěvky: 33
Reputace:   
 

Re: Určení počet kladných a záporných hodnot v zadaném poli z klávesnice-C

Už to jde, asi jsem jen unavenej :D

Offline

 

#7 26. 12. 2018 20:24

Zoufalec38
Příspěvky: 33
Reputace:   
 

Re: Určení počet kladných a záporných hodnot v zadaném poli z klávesnice-C

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

int main() {

    int RP, i, kladne, zaporne;
    float* INTERVAL;

    printf ("Zadejte pocet slozek RP: ");
    scanf ("%d", &RP);

    INTERVAL = (float*) malloc(RP * sizeof(float));
    for (i = 0; i < RP; i++) {
        printf ("Zadejte %d. slozku INTERVALU \n",i);
        scanf ("%f", &INTERVAL[i]);
    }

    for (i = 0; i < RP; i++) {
        printf("%f ", INTERVAL[i]);
    }

   for(i=0; INTERVAL[i]>0; i++){
      kladne=1;
      kladne++;
   }
   for(i=0; INTERVAL[i]<0; i++){
   zaporne =1;
   zaporne++;
        }
    FILE * p_soubor = fopen("ROZBOR.txt", "w");
   fprintf(p_soubor,"Pocet Zapornych je:%d\n",zaporne);
   printf(p_soubor, "Pocet kladnych slozek je:%d\n",kladne);
    return 0;
}
 
   

Tak jsem to zkusil takhle, ale pak jsem si vsiml, ze to pocita kladne hodnoty pouze dokud nenarazi na zaporne cislo. nevite nekdo co s tim?

Offline

 

#8 26. 12. 2018 20:28 — Editoval TomMi (26. 12. 2018 20:32)

TomMi
Zelenáč
Příspěvky: 5
Reputace:   
 

Re: Určení počet kladných a záporných hodnot v zadaném poli z klávesnice-C

Ahoj.
Udělal bych to následovně: cyklus for, od 0 do velikosti pole. V cyklu se ptát, zda je číslo kladné nebo záporné a podle toho zvyšovat proměnné.
Takže nějak takhle:
for(i = 0; i < RP; i++)
{
    if(INTERVAL[i] > 0)
   {
       kladne++;
   }
   else if(INTERVAL[i] < 0)
  {
      zaporne++;
  }
}

Offline

 

#9 26. 12. 2018 22:09 — Editoval MichalAld (26. 12. 2018 22:11)

MichalAld
Moderátor
Příspěvky: 4874
Reputace:   125 
 

Re: Určení počet kladných a záporných hodnot v zadaném poli z klávesnice-C

Jo jo.
Ještě bych taky zvážil, zdali se má nula brát jako kladné číslo, nebo se má ignorovat (případně počítat extra). Pokud by měla být jako kladné číslo, tak se to trochu zjednoduší.

Code:

for(i = 0; i < RP; i++)
{
    if(INTERVAL[i] => 0)
   {
       kladne++;
   }
   else  {
      zaporne++;
  }
}

Případně i takto:

Code:

for(i = 0; i < RP; i++)
{
    if(INTERVAL[i] => 0)
   {
       kladne++;
   }
}
zaporne = RP - kladne;

Pokud víme předem, kolikrát máme cyklus provádět (kolik máme prvků v poli) je "for cyklus" ideální možnost, ale vždycky jej můžeme také napsat pomocí "while cyklu", třeba takto:

Code:

i = 0;
while(i < RP)
{
    if(INTERVAL[i] => 0)
   {
       kladne++;
   }
   else  {
      zaporne++;
  }
  i++;
}

Offline

 

#10 26. 12. 2018 22:13

MichalAld
Moderátor
Příspěvky: 4874
Reputace:   125 
 

Re: Určení počet kladných a záporných hodnot v zadaném poli z klávesnice-C

A když už se použije funkce fopen(), bývá dobrým zvykem použít také fclose().

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson