Program szukający danej liter/liter

Odpowiedz Nowy wątek
2019-05-26 19:57
0

Jak napisać program, który znajdzie słowa zawierające literę h oraz ch ?
Mam taki program :

#include <stdio.h>
#include <ctype.h>
#include <string.h>

int main(){
    FILE *slownik, *zapis;
    slownik = fopen("slownik.txt", "r");
     if((slownik = fopen("plik.txt", "r")) == NULL){ //pom-pomoc
        printf("Blad otwarcia pliku plik.txt");//tryb otwarcia do odczytu
        getch();
        return 0;
    }
    zapis = fopen("zapis.txt" , "w");

    char litera;
    int pozycja ;
    printf("Podaj litere i pozycje ");
    scanf("%c %d",  &litera, &pozycja);
    char slowo[30];
    while((fscanf(slownik, "%s", slowo))!=EOF){
        if(strlen(slowo)>pozycja &&litera == slowo[pozycja])
            fprintf(zapis, "%s\n", slowo);
    }

    fclose(slownik);
    fclose(zapis);
    return 0;
}

Nie wiem jak go zmodyfikować

Pozostało 580 znaków

2019-05-26 20:59
0
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(){
    FILE *slownik, *zapis;
    slownik = fopen("slownik.txt", "r");
     if((slownik = fopen("plik.txt", "r")) == NULL){ //pom-pomoc
        printf("Blad otwarcia pliku plik.txt");//tryb otwarcia do odczytu
        getch();
        return 0;
    }
    zapis = fopen("zapis.txt" , "w");

    int n=0;
    int n2=0;

    char s[50] = "h";
    char s2[50] ="ch";

    char slowo[50];

    fprintf(zapis,"Lista słów:\n");

    while((fscanf(slownik, "%s", slowo))==1){

        if(strstr(slowo,s)!=0){
            n++;
            fprintf(zapis,"%s\n",slowo);

        }

        if(strstr(slowo,s2)!=0){
            n2++;

        }

    }

fprintf(zapis, "Liczba słów z literą %s: %d\nLiczba słów z literą %s: %d\n", s,n,s2,n2);
    fclose(slownik);
    fclose(zapis);
    return 0;
}

Każdy programista przybywający z innego miasta jest fachowcem.
Dlaczego to po while przyrównujemy do 1 (==1) ? Też wprowadziłeś tu zmienne n, n2 czy jest to potrzebne ? Chciałam tylko aby program przepisał mi słowa spełniające warunek do nowego pliku bez zliczania - Kate321 2019-05-26 21:17
jak fscanf znajdzie slowo zwraca 1, dlatego ==1, inaczej konczy się petla - gk1982 2019-05-26 22:04

Pozostało 580 znaków

2019-05-26 21:31
0
gk1982 napisał(a):
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(){
    FILE *slownik, *zapis;
    slownik = fopen("slownik.txt", "r");
     if((slownik = fopen("plik.txt", "r")) == NULL){ //pom-pomoc
        printf("Blad otwarcia pliku plik.txt");//tryb otwarcia do odczytu
        getch();
        return 0;
    }
    zapis = fopen("zapis.txt" , "w");

  int n=0;
  int n2=0;

    char s[50] = "h";
    char s2[50] ="ch";

    char slowo[50];

    fprintf(zapis,"Lista słów:\n");

    while((fscanf(slownik, "%s", slowo))==1){

        if(strstr(slowo,s)!=0){
          n++;
          fprintf(zapis,"%s\n",slowo);

      }

      if(strstr(slowo,s2)!=0){
          n2++;

      }

    }

fprintf(zapis, "Liczba słów z literą %s: %d\nLiczba słów z literą %s: %d\n", s,n,s2,n2);
    fclose(slownik);
    fclose(zapis);
    return 0;
}
 Zmodyfikowałam ale coś jest nie tak bo nie wpisuje mi słów do plików

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

int main(){
    FILE *slownik, *zapis1 ,*zapis2;
    slownik = fopen("slownik.txt", "r");
     if((slownik = fopen("plik.txt", "r")) == NULL){ //pom-pomoc
        printf("Blad otwarcia pliku plik.txt");//tryb otwarcia do odczytu
        getch();
        return 0;
    }
    zapis1 = fopen("zapis1.txt" , "w");
    zapis2 = fopen("zapis2.txt" , "w");

    char s[50] = "h";
    char s2[50] ="ch";

    char slowo[50];

    while((fscanf(slownik, "%s", slowo))!=EOF){

        if(strstr(slowo,s)!=0){
            fprintf(zapis1,"%s\n",slowo);}

        if(strstr(slowo,s2)!=0){
            fprintf(zapis2,"%s\n",slowo);}

        }
    fclose(slownik);
    fclose(zapis1);
    fclose(zapis2);
    return 0;
}
edytowany 1x, ostatnio: Kate321, 2019-05-26 21:33

Pozostało 580 znaków

2019-05-26 21:36
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <ctype.h>

int main(){
FILE *slownik, *zapis1 ,*zapis2;
slownik = fopen("slownik.txt", "r");
if((slownik = fopen("plik.txt", "r")) == NULL){ //pom-pomoc
printf("Blad otwarcia pliku plik.txt");//tryb otwarcia do odczytu
getch();
return 0;
}
zapis1 = fopen("zapis1.txt" , "w");
zapis2 = fopen("zapis2.txt" , "w");

char s[50] = "h";
char s2[50] ="ch";

char slowo[50];

while((fscanf(slownik, "%s", slowo))!=EOF){

    if(strstr(slowo,s)!=0){
        fprintf(zapis1,"%s\n",slowo);}

    if(strstr(slowo,s2)!=0){
        fprintf(zapis2,"%s\n",slowo);}

    }
fclose(slownik);
fclose(zapis1);
fclose(zapis2);
return 0;

}

Każdy programista przybywający z innego miasta jest fachowcem.
Pokaż pozostałe 4 komentarze
musisz zrobic else if i w pierwszym if dac ten if z s2 a po else if ten if z s - gk1982 2019-05-26 21:48
while((fscanf(slownik, "%s", slowo))!=EOF){ if(strstr(slowo,s2)!=0) fprintf(zapis2,"%s\n",slowo); else (strstr(slowo,s)!=0) fprintf(zapis1,"%s\n",slowo; } Coś jest nie tak - Kate321 2019-05-26 21:55
{ if(strstr(slowo,s2)!=0) fprintf(zapis2,"%s\n",slowo); else if(strstr(slowo,s)!=0) fprintf(zapis1,"%s\n",slowo; } - gk1982 2019-05-26 21:56
po else brakuje if, musi byc else if - gk1982 2019-05-26 21:57
Działa! Dziękuję :) - Kate321 2019-05-26 21:59

Pozostało 580 znaków

2019-05-27 14:56
1

Po co szukać "ch" skoro znalezienie "h" jest warunkiem koniecznym na znalezienie "ch"?


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
Osobno slowa z ch i h w plikach - gk1982 2019-05-27 16:46

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0