Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 14 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
C program

Registrovaný: 15.07.13
Prihlásený: 27.05.18
Príspevky: 243
Témy: 42
Príspevok NapísalOffline : 25.03.2017 9:24

Potrebujem zmeniť malé písmená po bodke na veľké v súbore a už sa stým parám dva dni nevedeli by ste mi pomôcť?
Kód:
 #include <stdio.h>
#include <stdlib.h>

int main()
{
     FILE *f;
    int c;
    f = fopen("vstup.txt", "r");
     while ((c = getc(f)) != EOF){
        putchar(c);
     }
     if((c=getc(f)) == '.'||((c=getc(f)) == '?') || ((c=getc(f)) == '!')){
          c = getc(f);
          c = toupper(c);
          putc(c, f);
     }
    fclose(f);
    return 0;
}







_________________
PC: MB MSI 970A-G43 CPU AMD FX6300 6*3,50GHt turbo 4,1Ghz GPU Gigabyte r7 370 windforce oc edition 2GB Ram 8GB Kingston fury hyperx 1866Mhz SSD:Kingston SSDNow V300 120GB
HDD:Seagete baracuda 1TB 7200rpm HDD2 Samsung HD502HJ 500GB 7200RPM PSU fortron hexa + 500W cpu chladič zalman CNPS5X Performa
NOTEBOOK:HP Elitebook 8460p
Tablet:Prestigio visconte Quad:
Mobil: Microsoft Lumia 640 Dual sim

Auto:Chevrolet camaro 1986 IROC-Z
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 28.04.11
Prihlásený: 26.04.24
Príspevky: 296
Témy: 27
Bydlisko: Martin/Brno
Príspevok NapísalOffline : 25.03.2017 10:15

To co robi tento tvoj program je, ze

Kód:
while ((c = getc(f)) != EOF){
    putchar(c);
}


ti precita cely subor a jedine co spravi je, ze ho vypise do konzoly. Nasledne sa snazis 4-krat citat z uz precitaneho suboru, vzdy ked napises c=getc(f) tak to precita jeden znak, avsak vzdy to bude EOF, pretoze si uz cely subor precital.

Potrebujes si to nejako rozvrhnut na dve fazy:

1. faza: Citam a zapisujem az kym nenajdem '.'
2. faza: Citam a zapisujem toupper

Je uz na tebe ci zvolis dva while cykly pre kazdu fazu, alebo si oddelis tie fazy pomocou nejakeho flagu, ktory nastavis na true ak si nasiel bodku.


Offline

Užívateľ
Užívateľ
C program

Registrovaný: 15.07.13
Prihlásený: 27.05.18
Príspevky: 243
Témy: 42
Príspevok Napísal autor témyOffline : 25.03.2017 10:29

Kód:
#include <stdio.h>
#include <ctype.h>


int main(){
    int ch, pismeno = 0;
    FILE *f;
    f = fopen ("vstup.txt","r");
    while ( (ch = fgetc (f)) != EOF )
    {
        if (!pismeno && islower(ch))
            ch = toupper(ch);
        printf ("%c",ch);
        pismeno = isalpha(ch);
    }
    fclose (f);
    return(0);
}
Kamarát to urobil takto môžem sa spýtať že čo to robí? a prečo to ide?
a ako to zmeniť aby to menilo na veľké písmená len na začiatku vety?







_________________
PC: MB MSI 970A-G43 CPU AMD FX6300 6*3,50GHt turbo 4,1Ghz GPU Gigabyte r7 370 windforce oc edition 2GB Ram 8GB Kingston fury hyperx 1866Mhz SSD:Kingston SSDNow V300 120GB
HDD:Seagete baracuda 1TB 7200rpm HDD2 Samsung HD502HJ 500GB 7200RPM PSU fortron hexa + 500W cpu chladič zalman CNPS5X Performa
NOTEBOOK:HP Elitebook 8460p
Tablet:Prestigio visconte Quad:
Mobil: Microsoft Lumia 640 Dual sim

Auto:Chevrolet camaro 1986 IROC-Z
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 28.04.11
Prihlásený: 26.04.24
Príspevky: 296
Témy: 27
Bydlisko: Martin/Brno
Príspevok NapísalOffline : 25.03.2017 10:34

Nemyslim si ze to funguje spravne, nikde tam neriesi ci uz precital tu bodku. Takisto tam zbytocne riesi ci je precitany znak pismeno a ci je male. Podla dokumentacie http://www.cplusplus.com/reference/cctype/toupper/ toupper nezmeni hodnotu ak to nieje male pismeno. Takze toto by fungovalo rovnako:

Kód:
int main(){
    int ch;
    FILE *f;
    f = fopen ("vstup.txt", "r");
    while ( (ch = fgetc(f)) != EOF )
    {
        printf("%c", toupper(ch));
    }
    fclose(f);
    return 0;
}


Ale neskusal som, takze mozno som niekde spravil chybu.


Offline

Užívateľ
Užívateľ
C program

Registrovaný: 15.07.13
Prihlásený: 27.05.18
Príspevky: 243
Témy: 42
Príspevok Napísal autor témyOffline : 25.03.2017 10:37

a ako to spravím aby to zmenilo na veľké iba na začiatku vety?







_________________
PC: MB MSI 970A-G43 CPU AMD FX6300 6*3,50GHt turbo 4,1Ghz GPU Gigabyte r7 370 windforce oc edition 2GB Ram 8GB Kingston fury hyperx 1866Mhz SSD:Kingston SSDNow V300 120GB
HDD:Seagete baracuda 1TB 7200rpm HDD2 Samsung HD502HJ 500GB 7200RPM PSU fortron hexa + 500W cpu chladič zalman CNPS5X Performa
NOTEBOOK:HP Elitebook 8460p
Tablet:Prestigio visconte Quad:
Mobil: Microsoft Lumia 640 Dual sim

Auto:Chevrolet camaro 1986 IROC-Z
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 28.04.11
Prihlásený: 26.04.24
Príspevky: 296
Témy: 27
Bydlisko: Martin/Brno
Príspevok NapísalOffline : 25.03.2017 10:38

Asi som zle pochopil zadanie. Mozes mi dat nejaky priklad vstupu a vystupu? Za bodkou menis vsetky pismena na velke, alebo iba prve?


Offline

Užívateľ
Užívateľ
C program

Registrovaný: 15.07.13
Prihlásený: 27.05.18
Príspevky: 243
Témy: 42
Príspevok Napísal autor témyOffline : 25.03.2017 10:41

Mám viaceré vety v súbore a všetko napísané malým a prvé písmeno na začiatku vety má byť veľké a všetko ostatné malé (teda veľké majú byť iba písmená po . ? ! a tiež iba prvé písmeno v prvej vete)


Vstup: toto je prva veta.toto je druha veta?toto je tretia veta?toto je posledna veta
Výstup: Toto je prva veta.Toto je druha veta?Toto je tretia veta?Toto je posledna veta







_________________
PC: MB MSI 970A-G43 CPU AMD FX6300 6*3,50GHt turbo 4,1Ghz GPU Gigabyte r7 370 windforce oc edition 2GB Ram 8GB Kingston fury hyperx 1866Mhz SSD:Kingston SSDNow V300 120GB
HDD:Seagete baracuda 1TB 7200rpm HDD2 Samsung HD502HJ 500GB 7200RPM PSU fortron hexa + 500W cpu chladič zalman CNPS5X Performa
NOTEBOOK:HP Elitebook 8460p
Tablet:Prestigio visconte Quad:
Mobil: Microsoft Lumia 640 Dual sim

Auto:Chevrolet camaro 1986 IROC-Z
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 28.04.11
Prihlásený: 26.04.24
Príspevky: 296
Témy: 27
Bydlisko: Martin/Brno
Príspevok NapísalOffline : 25.03.2017 10:47

Jaj jasne, to mi mohlo napadnut, nabuduce napis to zadanie trochu lepsie na zaciatku, idealne aj s nejakymi vstupmi aj vystupmi.

No to by nemalo byt take zlozite, proste citaj znaky, a ukladaj si informaciu o predchadzajucom znaku ci bol alebo nebol .!?.

V cykle rob tieto kroky:
1. Zisti ci bol predchadzajuci znak .!? ak ano vypis toupper(c) ak nie vypis c.
2. Zisti ci je aktualny znak .!? ak ano uloz do nejakej premennej true inak uloz false

Pred zaciatkom cyklu nastav tuto premennu na true aby si zmenil aj prvy znak na velke pismeno.


Offline

Užívateľ
Užívateľ
C program

Registrovaný: 15.07.13
Prihlásený: 27.05.18
Príspevky: 243
Témy: 42
Príspevok Napísal autor témyOffline : 25.03.2017 10:55

a ako si viem uložiť informáciu o predchádzajúcom znaku?







_________________
PC: MB MSI 970A-G43 CPU AMD FX6300 6*3,50GHt turbo 4,1Ghz GPU Gigabyte r7 370 windforce oc edition 2GB Ram 8GB Kingston fury hyperx 1866Mhz SSD:Kingston SSDNow V300 120GB
HDD:Seagete baracuda 1TB 7200rpm HDD2 Samsung HD502HJ 500GB 7200RPM PSU fortron hexa + 500W cpu chladič zalman CNPS5X Performa
NOTEBOOK:HP Elitebook 8460p
Tablet:Prestigio visconte Quad:
Mobil: Microsoft Lumia 640 Dual sim

Auto:Chevrolet camaro 1986 IROC-Z
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 28.04.11
Prihlásený: 26.04.24
Príspevky: 296
Témy: 27
Bydlisko: Martin/Brno
Príspevok NapísalOffline : 25.03.2017 11:00

Kód:
int koniecVety = 1;
.
.
.

if (c == '.' || c == '!' || c == '?') {
    koniecVety = 1;
} else {
    koniecVety = 0;
}

.
.
.


Offline

Užívateľ
Užívateľ
C program

Registrovaný: 15.07.13
Prihlásený: 27.05.18
Príspevky: 243
Témy: 42
Príspevok Napísal autor témyOffline : 25.03.2017 11:08

to som pochopil len som to začal robiť iba pre otáznik a aj tak to nejde
Kód:
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

int main()
{
    FILE *f;
    int ch,t;
    f = fopen("vstup.txt", "r");
    t=1;
    while( (ch = fgetc(f)) !=EOF){
            if (ch == '?'){
                 t=1;
             printf("%c",toupper(ch));
            }
        else{
            t=0;
            printf("%c",ch);
        }
    }
    fclose(f);
    return 0;
}







_________________
PC: MB MSI 970A-G43 CPU AMD FX6300 6*3,50GHt turbo 4,1Ghz GPU Gigabyte r7 370 windforce oc edition 2GB Ram 8GB Kingston fury hyperx 1866Mhz SSD:Kingston SSDNow V300 120GB
HDD:Seagete baracuda 1TB 7200rpm HDD2 Samsung HD502HJ 500GB 7200RPM PSU fortron hexa + 500W cpu chladič zalman CNPS5X Performa
NOTEBOOK:HP Elitebook 8460p
Tablet:Prestigio visconte Quad:
Mobil: Microsoft Lumia 640 Dual sim

Auto:Chevrolet camaro 1986 IROC-Z
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 28.04.11
Prihlásený: 26.04.24
Príspevky: 296
Témy: 27
Bydlisko: Martin/Brno
Príspevok NapísalOffline : 25.03.2017 11:12

Ano toto nemoze prejst, pretoze ty robis toupper na otazniku. Musis tam mat dva ify

Kód:
while(..) {
    if(t == 1) {
        printf(toupper(c))
    } else {
        printf(c)
    }

    if (c == '.' || c == '!' || c == '?') {
        t = 1;
    } else {
        t = 0;
    }
}



// Spojený príspevok Sob 25.03.17 11:20:12

Dalo by sa pouzit aj to, ze si neukladas informaciu o tom ci to bol .!?. Ale rovno si ukladas predchadzajuci znak:
Kód:
char c;
char previous = '.';

while(..) {
    if (previous == '.' .....) {
        printf(toupper)
    } else {
        printf(c)
    }

    previous = c;
}

Toto druhe riesenie je krajsie.


Offline

Užívateľ
Užívateľ
C program

Registrovaný: 15.07.13
Prihlásený: 27.05.18
Príspevky: 243
Témy: 42
Príspevok Napísal autor témyOffline : 25.03.2017 11:20

aháááááááááááááá
už som pochopil
ide to
normálne si to lepšie vysvetlil ako môj profák s 4 titulmi
Ďakujem veľmi pekne za pomoc







_________________
PC: MB MSI 970A-G43 CPU AMD FX6300 6*3,50GHt turbo 4,1Ghz GPU Gigabyte r7 370 windforce oc edition 2GB Ram 8GB Kingston fury hyperx 1866Mhz SSD:Kingston SSDNow V300 120GB
HDD:Seagete baracuda 1TB 7200rpm HDD2 Samsung HD502HJ 500GB 7200RPM PSU fortron hexa + 500W cpu chladič zalman CNPS5X Performa
NOTEBOOK:HP Elitebook 8460p
Tablet:Prestigio visconte Quad:
Mobil: Microsoft Lumia 640 Dual sim

Auto:Chevrolet camaro 1986 IROC-Z
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 28.04.11
Prihlásený: 26.04.24
Príspevky: 296
Témy: 27
Bydlisko: Martin/Brno
Príspevok NapísalOffline : 25.03.2017 11:21

Nieje vobec zaco.


Odpovedať na tému [ Príspevkov: 14 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. Program ktory sleduje iny program

v Ostatné programy

1

663

25.02.2012 9:12

br4n0 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Program s názvom program

v Ostatné programy

4

614

07.10.2010 22:48

shiro Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. program .zip.001 a program .zip.002 problem

v Ostatné programy

4

1452

15.06.2010 13:27

mack0 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Program Files vs Program Files/x86/

v Operačné systémy Microsoft

1

1212

21.11.2010 17:38

_zero Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. program

v Audio programy

2

846

20.06.2010 18:07

CARMIQ Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Program

v Sieťové a internetové programy

0

351

18.04.2012 15:23

Ominous Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Program

v Bezpečnosť a firewally

3

446

09.04.2012 15:21

gaborik16 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Program

v Databázy

1

1349

21.09.2006 9:40

tRizzO Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. program

v Audio programy

3

891

30.05.2007 19:56

OmeGa Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. program

v Elektronika

2

780

15.11.2007 19:32

bamby99 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Program

v Ostatné programy

4

1618

06.12.2007 21:44

alan Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. program

v Ostatné

0

964

02.12.2007 18:10

qwer0 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Program

v Ostatné programy

5

850

04.08.2007 20:20

fuco Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Program

v Assembler, C, C++, Pascal, Java

1

776

12.03.2008 16:09

snapshot Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. program

v Ostatné programy

7

327

08.10.2013 18:00

radoDM Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Program

v Bezpečnosť a firewally

5

1011

23.04.2009 21:46

1daemon1 Zobrazenie posledných príspevkov


Nemôžete zakladať nové témy v tomto fóre
Nemôžete odpovedať na témy v tomto fóre
Nemôžete upravovať svoje príspevky v tomto fóre
Nemôžete mazať svoje príspevky v tomto fóre

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra