Diskuze: Více vstupů - program s cyklem
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 6 zpráv z 6.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
isiel by som na to cez while a kontroloval navratovu hodnotu scanf na EoF... a do buducna, zdrojaky vkladaj radsej cez ctrl+k a prijemnejsie formatovanie by tiez nebolo od veci (ja osobne som tie cykly ani radsej necital )
Myslíš nějak takto ?
while (scanf (" %c%d %c%d %c", &r1,&x,&r2,&y,&r3) != EOF)
{/*tělo while*/}
return (0);
O tom ctrl+k jsem nevědel, začnu to používat!
Nepoužívaj scanf, ale pomocou fgets si načítaj potrebné dáta do buffera, ak bude buffer null tak sa ukončí celý cyklus. Ak nebude tak si pomocou sscanf načítaš formátované dáta do premenných a vyhodnotíš podmienky.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_INTERVAL 500000
int main(void){
int startInterval, endInterval;
int a, b, c;
int blockCount = 0;
char buffer[100];
printf("Intervaly:\n");
while (1) {
//ak pride napr EOF
if (fgets(buffer, sizeof(buffer), stdin) == NULL)
break;
//sscanf vrati pocet naplnenych premennych
if(sscanf(buffer, " %d %d", &startInterval, &endInterval) == 2
&& startInterval > 0
&& endInterval > 0
&& startInterval <= endInterval
&& endInterval < MAX_INTERVAL) {
for (a = 1; a <= endInterval; a++) {
for (b = a; b <= endInterval; b++) {
for (c = b; c <= endInterval; c++) {
int objem = a * b * c;
if (objem >= startInterval && objem <= endInterval)
blockCount++;
}
}
}
printf("Ruznych kvadru: %d\n", blockCount);
blockCount = 0;
}
else {
printf("Nespravny vstup.\n");
}
}
return 0;
}
Sorry hodilo mi to sem väčšie medzery (taby)
Díky za odpovědi!
Nakonec se mi to povedlo zprovoznit i pomocí toho scanf
Zobrazeno 6 zpráv z 6.