NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Program v C pomoc

V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Andrej Legát:7.6.2015 10:30

Pomohol by mi niekto s programom?

Napíšte program, kde na začiatku zadáte číslo od 10 do 15 z klávesnice, ktoré predstavuje počet zákazníkov, ktorí v jeden deň nakupovali. Za tým sa vygeneruje príslušný počet súm od 1 do 100, ktoré zaplatili za nákupy. Tieto údaje uložte do súboru vstup.txt. Do súboru vystup.txt uložte priemernú sumu.

 
Odpovědět
7.6.2015 10:30
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Andrej Legát
David Hartinger:7.6.2015 10:38

A s čím konkrétně potřebuješ pomoct?

Nahoru Odpovědět
7.6.2015 10:38
New kid back on the block with a R.I.P
Avatar
Odpovídá na David Hartinger
Andrej Legát:7.6.2015 11:05

konkretne ako to zapisat aby mi generovalo iba tolko cislic kolko zadam na zaciatku a za 2. ako urobit tu priemernu sumu

 
Nahoru Odpovědět
7.6.2015 11:05
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Andrej Legát
David Hartinger:7.6.2015 11:11

Pošli sem kód co máš a podíváme se na to.

Nahoru Odpovědět
7.6.2015 11:11
New kid back on the block with a R.I.P
Avatar
Andrej Legát:7.6.2015 11:28

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

main(){
int i,a,x;
FILE *f;
srand(time(0));
printf("Zadajte pocet zakaznikov od 10-15:\n");
scanf("%d",a);

f=fopen("vstup­.txt","w");
for (i=10; i<=15; i++){
x=rand()%100;

fprintf(f,"%d",x);

if(i%1==0)
fprintf(f," ");

}
fclose(f);

getchar();
getchar();
}

 
Nahoru Odpovědět
7.6.2015 11:28
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Andrej Legát
David Hartinger:7.6.2015 11:33

Místo:

for (i=10; i<=15; i++){

vložíš

for (i=1; i<=a; i++){

Protože v proměnné a máš počet zákazníků. Cyklus ti napočítá od 1 do tohoto čísla, proběhne tedy a-krát.

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
7.6.2015 11:33
New kid back on the block with a R.I.P
Avatar
Andrej Legát:7.6.2015 11:51

A možem sa ešte opýtať keď mám v inom príklade napísať do súboru vstup niekoľko znakov ako urobím aby do súboru výstup zapísalo iba každý druhý znak program už mám ale zapisuje mi každý jeden znak

 
Nahoru Odpovědět
7.6.2015 11:51
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Andrej Legát
David Hartinger:7.6.2015 12:01

Je více způsobů. Každopádně projedeš cyklem to pole charů a zapíšeš jen každý druhý znak. Můžeš se ptát jestli je i dělitelné dvěma (i % 2 == 0) nebo udělat cyklus 2x kratší a násobit indexy dvojkou.

Nahoru Odpovědět
7.6.2015 12:01
New kid back on the block with a R.I.P
Avatar
Odpovídá na David Hartinger
Andrej Legát:7.6.2015 13:25

zmenil som ten for ale zadam napr 12 cisel a nenapise mi ich 12 ale asi 150 cisel

 
Nahoru Odpovědět
7.6.2015 13:25
Avatar
Jakub Horák
Člen
Avatar
Jakub Horák:7.6.2015 14:36

Jednoduše v tom cyklu prostě budeš přičítat 2 místo 1. :)

Pokud jsi tam předtím měl

for (i = 0; i < x; i++)

Tak tam dáš

for (i = 0; i < x; i+=2)
Editováno 7.6.2015 14:38
 
Nahoru Odpovědět
7.6.2015 14:36
Avatar
Odpovídá na Andrej Legát
Libor Šimo (libcosenior):8.6.2015 9:32
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void)
{
    int i, a, x, pom = 0;
    FILE *vstup, *vystup;
    srand(time(0));
    printf("Zadajte pocet zakaznikov od 10-15:\n");
    //scanf("%d",a); //chyba
    scanf("%d", &a);
    if ((vstup = fopen("vstup.txt", "w")) == NULL)
        return 1;
    for (i = 0; i < a; i++){
        //x = rand()%100; // chyba - generuje 0 - 99
        x = rand()%100 + 1; // 1 - 100
        pom += x;
        fprintf(vstup, "%d ", x);
    }
    fprintf(vstup, "\n");
    fclose(vstup);
    if ((vystup = fopen("vystup.txt", "w")) == NULL)
        return 1;
    fprintf(vystup, "%.2f\n", (float)pom / a);
    fclose(vystup);

    return 0;
}
Nahoru Odpovědět
8.6.2015 9:32
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 11 zpráv z 11.