[ 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 | 42
NapísalOffline : 25.03.2017 9:24 | C program

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
Online

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

Registrovaný: 28.04.11
Prihlásený: 06.05.24
Príspevky: 296
Témy: 27 | 27
Bydlisko: Martin/Brno
NapísalOnline : 25.03.2017 10:15 | C program

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 | 42
Napísal autor témyOffline : 25.03.2017 10:29 | C program

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
Online

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

Registrovaný: 28.04.11
Prihlásený: 06.05.24
Príspevky: 296
Témy: 27 | 27
Bydlisko: Martin/Brno
NapísalOnline : 25.03.2017 10:34 | C program

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 | 42
Napísal autor témyOffline : 25.03.2017 10:37 | C program

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
Online

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

Registrovaný: 28.04.11
Prihlásený: 06.05.24
Príspevky: 296
Témy: 27 | 27
Bydlisko: Martin/Brno
NapísalOnline : 25.03.2017 10:38 | C program

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 | 42
Napísal autor témyOffline : 25.03.2017 10:41 | C program

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
Online

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

Registrovaný: 28.04.11
Prihlásený: 06.05.24
Príspevky: 296
Témy: 27 | 27
Bydlisko: Martin/Brno
NapísalOnline : 25.03.2017 10:47 | C program

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 | 42
Napísal autor témyOffline : 25.03.2017 10:55 | C program

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
Online

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

Registrovaný: 28.04.11
Prihlásený: 06.05.24
Príspevky: 296
Témy: 27 | 27
Bydlisko: Martin/Brno
NapísalOnline : 25.03.2017 11:00 | C program

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 | 42
Napísal autor témyOffline : 25.03.2017 11:08 | C program

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
Online

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

Registrovaný: 28.04.11
Prihlásený: 06.05.24
Príspevky: 296
Témy: 27 | 27
Bydlisko: Martin/Brno
NapísalOnline : 25.03.2017 11:12 | C program

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 | 42
Napísal autor témyOffline : 25.03.2017 11:20 | C program

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
Online

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

Registrovaný: 28.04.11
Prihlásený: 06.05.24
Príspevky: 296
Témy: 27 | 27
Bydlisko: Martin/Brno
NapísalOnline : 25.03.2017 11:21 | C program

Nieje vobec zaco.


 [ Príspevkov: 14 ] 


C program



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

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

Program s názvom program

v Ostatné programy

4

615

07.10.2010 22:48

shiro

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

program .zip.001 a program .zip.002 problem

v Ostatné programy

4

1453

15.06.2010 13:27

mack0

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

1214

21.11.2010 17:38

_zero

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

Program

v Databázy

1

1349

21.09.2006 9:40

tRizzO

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

program

v Audio programy

3

891

30.05.2007 19:56

OmeGa

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

program

v Elektronika

2

782

15.11.2007 19:32

bamby99

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

Program

v Ostatné programy

4

1618

06.12.2007 21:44

alan

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

program

v Ostatné

0

965

02.12.2007 18:10

qwer0

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

Program

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

1

778

12.03.2008 16:09

snapshot

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

Program

v Ostatné programy

5

851

04.08.2007 20:20

fuco

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

program

v Ostatné programy

7

328

08.10.2013 18:00

radoDM

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

Program

v Bezpečnosť a firewally

5

1012

23.04.2009 21:46

1daemon1

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

PROGRAM

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

13

818

15.11.2009 16:22

shiro

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

program

v Ostatné programy

0

914

18.08.2007 17:43

jkjkjk

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

Program

v Sieťové a internetové programy

8

710

19.02.2008 15:44

Electrol



© 2005 - 2024 PCforum, edited by JanoF