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
Stránky: 1
/* 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
Já vím, že je to asi blbost, ale to už byl atkový psolední pokus
Offline
Už to jde, asi jsem jen unavenej :D
Offline
#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
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
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ší.
for(i = 0; i < RP; i++) { if(INTERVAL[i] => 0) { kladne++; } else { zaporne++; } }
Případně i takto:
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:
i = 0; while(i < RP) { if(INTERVAL[i] => 0) { kladne++; } else { zaporne++; } i++; }
Offline
Stránky: 1