Pomijanie niepotrzebnych wierszy

0

Witam. Stworzyłem program który pobiera zdanie z pliku oraz pojedyncze wyrazy z drugiego pliku, a następnie powinien zliczyć które wyrazy z pierwszego pliku nie wystepują w drugim pliku. Wynik powinien wyglądać tak:
Programowanie: 2 razy --> plik pojawia się w pliku pierwszym 2 razy i nie występuje w drugim.
Natomiast u mnie wygląda to tak:
Programowanie: 2 razy
Programowanie: 2 razy
Co zrobić żeby to drugie już się nie pojawiło?
Nadmienię, iż są to zmienne zdefiniowane następująco:
string Słowo[1000];

0

Wrzucaj do jakiegoś seta i wypisz na końcu.

0

Jedno z:

  1. Posortować, usunąć duplikaty
  2. Przed wyświetleniem sprawdzić czy to słowo występuje wcześniej czy nie.
0

Wszystko by było super tylko z niewiadomych przyczyn z byle powodów pojawia mi sie bład "Program przestał działać" np gdy chce wyzerować jakaś zmienną która przed chwilą zdefiniowałem. Czym może być spowodowany taki błąd?
I jeszcze jedno pytanko z tego tematu; ) Słowa w pierwszym pliku są porozdzielane różnymi znakami. Za pomocą ifa i wartości ASCII dla liter udało mi się zapełnić tablicę wyrazami tylko, że tam gdzie były obok siebie np 2 znaki inne niż litery np.%% wtedy tworzy mi się niepotrzebny enter który nie wiem czemu ale również zapisuje się w tablicy. Entery te później także się zliczają i wychodzi coś w tym stylu:
: 7 razy. Można to pominąć jakimś ifem? Próbowałem czegoś w tym stylu
If (slowo[y]==""){
}else {
cout<<slowo[y]<<endl;
}
ale nie działa;/ Jakieś pomysły?

if((90>=int(tekst[i])) && (int(tekst[i])>=65)){

				slowo[y]=slowo[y]+tekst[i];
			} else if((122>=int(tekst[i])) && (int(tekst[i])>=97)){
								tekst[i]=int(tekst[i])-32;

								slowo[y]=slowo[y]+tekst[i];

							} else {

								y=y+1;
								licznik=licznik+1;
							}
			}

Tak wygląda to dzielenie zdania na słowa.

0
if(slowo[x] != '\n')
    cout << slowo;

Jak juz + http://stackoverflow.com/questions/236129/splitting-a-string-in-c

0

No niestety nie działa;/ nadal wyświetla:
Wyrazy spoza slownika:
SLOWNIKIEM: 1razy
NADZOREM: 1razy
: 3razy
WYRAZAMI: 2razy
OBCYMI: 1razy
WYRAZAMI: 2razy
BLISKOZNACZNYMI: 1razy
: 3razy
: 3razy

0

Człowieku wrzuć porzadnie kod, cały i w znacznikach bo nikt ci pomagać nie będzie jak ma się sam domyślać.

0

Jak sobie życzysz. Program składa się z trzech plików dlatego wzbraniałem sie przed wysyłaniem go.

Teoretycznie wydaje mi się że wszystko jest dobrze jednak z niewiadomych mi przyczyn się wysypuje

źle zrozumiałem qweqwe oto kod:

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <string>
#include <cctype>
#include "funkcje.h"
#include <sstream>

using namespace std;

int main(int argc, char *argv[]) {
if (argc != 3) {
printf("Program nalezy uruchomic podajac dwa argumenty:\n");
printf("%s [slownik] [plik do sprawdzenia]", dajNazweProgramu(argv[0]) );
return EXIT_FAILURE;
}
if (!plikDostepny( argv[1] )) {
printf("Nie mozna odczytac pliku slownika: %s\n", argv[1] );
return EXIT_FAILURE;
}
if (!plikDostepny( argv[2] )) {
printf("Nie mozna odczytac pliku do sprawdzenia: %s\n", argv[2] );
return EXIT_FAILURE;
}
int licznik,licznik2,x,z;
int l,i,rozmiar_slownika,y;
string slowo[1000];
string tekst2[1000];
string wyswietlone[1000];

char** slownik = wczytajSlownik( argv[1], &rozmiar_slownika );
char* tekst = wczytajTekst( argv[2] );

/* Wyswietlanie zawartosci slownika
printf( "Slownik: %s\n", argv[1]);
for (int i=0;i<rozmiar_slownika;i++)
	printf( "%s\n", slownik[i] );
 */

/* Wyswietlanie tekstu do sprawdzenia
printf( "Tekst: %s\n", tekst );
printf( "Pierwsza litera tekstu: %c\n", tekst[0] );
 */

// TU WPISZ PROGRAM


	for (int i=0;i<rozmiar_slownika;i++)


		x=strlen(tekst);
		licznik2=0;
		licznik=0;
		y=0;
		for (i=0;i<=x;i++){


			if((90>=int(tekst[i])) && (int(tekst[i])>=65)){

				slowo[y]=slowo[y]+tekst[i];
			} else if((122>=int(tekst[i])) && (int(tekst[i])>=97)){
								tekst[i]=int(tekst[i])-32;

								slowo[y]=slowo[y]+tekst[i];

							} else {

								y=y+1;
								licznik=licznik+1;
							}
			}




		printf("Wyrazy spoza slownika: \n");
		  for (y=0;y<=licznik;y++){

			  x=0;
			  for (i=0;i<=rozmiar_slownika;i++){
				  	  tekst2[i]=slownik[i];
				  if (tekst2[i]==slowo[y]){

					  x++;
				  }
			  }
			  licznik2=0;
				if (x==0){


					for(i=0;i<=licznik;i++){
						if (slowo[y]==slowo[i]){
							licznik2++;

						}
					}
						for (z=0;z<=y;z++){                            //// PO DODANIU TEGO (WYSWIETLENIE TYLKO RAZ DANEGO SLOWA)
					if (slowo[y]==wyswietlone[z]){                     //// WYSKAKUJE BLAD: PROGRAM PRZESTAŁ DZIALAC- CZEMU?
						l=l+1;
					}
						}
						if (l==0){
					cout<<slowo[y]<<": "<<licznik2<<"razy"<<endl;
						}

				}

			  }


return EXIT_SUCCESS;

}

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