• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Programowanie w języku C - problem z zadaniem

Object Storage Arubacloud
0 głosów
279 wizyt
pytanie zadane 15 stycznia 2019 w C i C++ przez gorgonkowa Obywatel (1,810 p.)

Hejka. Chciałabym poprosić o pomoc w związku z zadaniem. Treść jest następująca:
Opracować program wczytujący ze standardowego wejścia słowa składające się tylko z liter i wyświetlający w osobnych wierszach na ekranie te słowa, które zwierają liczbę i rodzaj znaków podane w wierszu poleceń. Można założyć, że wszystkie wprowadzane dane będą poprawne.

Przykładowo dla uruchomienia programu: $ prog a 3 i danych na standardowym wejściu:

aaa bbb ccacasa dd eeeeaaa sss ddd 4aa444 d1ddaaa bbaccadda

program powinien wyświetlić:

aaa
ccacasa
eeeeaaa
bbaccadda

Próba kodu wypadła tak:
 

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

int main()
{
    system("CLS");
    HANDLE Kolor = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleTextAttribute(Kolor, 10);
    printf("Witamy w programie filtrowania!\n\n");
    Sleep(2000);
	char tablica[60], sprawdz[16];
	char *ciag_znakow, *ciag_sprawdz, *znak;
    SetConsoleTextAttribute(Kolor, 11);
	printf("Wprowadz dowolny ciag znakow ze spacjami: \n");
	ciag_znakow = fgets(tablica, 60, stdin); //fgets czyta kolejne znaki ze strumienia

	printf("\nWprowadz ciag znakow, ktory ma filtrowac wpisane frazy: \n");
	scanf("%s",sprawdz);

	ciag_sprawdz = sprawdz;

	znak = strtok(ciag_znakow," ");

	printf("\nWyrazy zawierajace filtrowane frazy to: '%s' \n", ciag_sprawdz);
	while(znak != NULL)
	{
		if(strstr(znak, ciag_sprawdz))
			printf("%s\n ",znak);
		znak = strtok(NULL, " ");
	}
    SetConsoleTextAttribute(Kolor, 14);
	printf("\n\n");
	Sleep(2500);
	printf("Koniec programu!\n");
	return 0;
}

 

komentarz 15 stycznia 2019 przez Neeq Obywatel (1,930 p.)
O widzę Kielce :D nie polecam, jestem na 1 roku właśnie :D
komentarz 15 stycznia 2019 przez gorgonkowa Obywatel (1,810 p.)
Niestety... :P
komentarz 15 stycznia 2019 przez gorgonkowa Obywatel (1,810 p.)

Jeszcze spróbowałam w ten sposób, jednak kod tak naprawdę kończy się po wpisaniu słowa:
 

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

int main(int argc, char *argv[])
{
    char line[255];
    char szukaj=argv;
    int ile=argc;
    int i=0;
    char pom[]=" ";
    int dlugosc=0;
    int licznik=0;
    char *tmp;

    printf("wprowadz slowa\n");
    scanf("%[^\n]",line);
    tmp=strtok(line,pom);
    while(tmp!=NULL)
    {
        dlugosc=strlen(tmp);
        for(i=0;i<dlugosc;i++)
        {
            if(isdigit(tmp[i]))
            {
                break;
            }
            else
            {
                if(tmp[i]==szukaj)
                    licznik++;
            }
        }
        if(licznik==ile)
            printf("%s\n",tmp);
        licznik=0;
        tmp=strtok(NULL,pom);
    }
    return(0);
}

 

komentarz 15 stycznia 2019 przez j23 Mędrzec (194,920 p.)
char szukaj=argv;
int ile=argc;

Ojoj, to Ci się w ogóle skompilowało? Tak zrób:

char szukaj = 0; 
int ile = 0;
...

if(argc == 3)
{
	szukaj = *argv[1]; 
	ile = atoi(argv[2]);
} 

Popraw też warunek z linii 35 na:

if(i == dlugosc && licznik == ile) printf("%s\n",tmp);
komentarz 15 stycznia 2019 przez gorgonkowa Obywatel (1,810 p.)
Oki, wszystko się udało. Bardzo dziękuję za pomoc Szeryfie j23 :)

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 170 wizyt
pytanie zadane 19 sierpnia 2022 w C i C++ przez benny13 Obywatel (1,150 p.)
0 głosów
1 odpowiedź 195 wizyt
pytanie zadane 22 sierpnia 2017 w C i C++ przez poczatkujacy12 Nowicjusz (150 p.)
0 głosów
1 odpowiedź 189 wizyt
pytanie zadane 2 czerwca 2018 w C# przez Dominik258 Nowicjusz (150 p.)

92,572 zapytań

141,422 odpowiedzi

319,644 komentarzy

61,959 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...