Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Porównanie jednej tablicy z druga.

Ostatnio zmodyfikowano 2016-02-05 16:39
Autor Wiadomość
sebabass
Temat założony przez niniejszego użytkownika
Porównanie jednej tablicy z druga.
» 2016-02-05 10:14:43
Witam,
Od jakiegoś cczasu zacząłem programować w C++. Robię pewne zadanie i mam problem.
Otoż w tym zadaniu użytkonik ma podać 7 liter. A program ma mu wypisać wszystkie możliwe wyrazy z tych liter. Wyrazy pobieram z txt. Mój kod wygląda tak:

C/C++
#include<iostream>
#include<cstdlib>
#include<fstream>
#include<windows.h>
#include<stdio.h>
#include<cstring>
#include<conio.h>
#include<string>


using namespace std;

char litera[ 7 ];


int main()
{
    cout << "Podaj 7 roznych znakow:" << endl;
   
    for( int i = 0; i < 7; i++ )
    {
        cin >> litera[ i ];
    }
   
    fstream plik;
    plik.open( "slownik.txt", ios::in );
   
    if( plik.good() == false )
    {
        cout << "Plik nie istnieje";
        system( "pause" );
        exit( 0 );
    }
   
    string linia;
    int nr_lini = 1;
   
    while( getline( plik, linia ) )
    {
       
        cout << linia << endl;
        nr_lini++;
    }
   
   
   
   
   
   
    system( "pause" );
    return 0;
}

Mój program wyświetla wszystkie wyrazy z txt. Pytanie teraz, jak zrobić aby wyświetlił mi tylko te wyrazy, które składają się z tych 7 liter. Myślałem nad uzyciem jeszcze jednej tablicy skłądającej się z całego alfabetu. Od tej nowej tablicy odjąć te wybrane przez użytkownika i każdy wyraz przebadać, jesli znajdzie literę niezdefiniowaną to to bierze następny wyraz. Ale jak to zapisać...
Myślałem, żeby w pętli while dołożyć coś takiego:

            
C/C++
for( int i = 0; i < 7; i++ )
{
    for( int j = 0; j < 7; j++ )
    {
        if( linia[ i ] == litera[ j ] )
             linia[ i ] = 0;
       
    }
}
Nie proszę o rozwiązanie, tylko o pomoc, nakierowanie.
Pozdrawiam![/i][/i]
P-144485
pekfos
» 2016-02-05 10:41:24
Stwórz tablicę wartości logicznych i ustaw pole na true, jeśli jego indeks jest równy kodowi znaku, który może występować. Jeśli dla każdego znaku sprawdzanego wyrazu w tablicy będzie prawda, to go wyświetl.
P-144486
darko202
» 2016-02-05 10:42:07
wolny pomysł na algorytm

0. wczytujesz kolejne słowa
1. dla kolejnego wczytanego słowa
2. sprawdzasz kolejne litery, czy są w słowniku liter (   char litera[ 7 ]; )
3. jeśli litery nie ma w słowniku - słowo odrzucasz


P-144487
sebabass
Temat założony przez niniejszego użytkownika
» 2016-02-05 10:47:26
darko202 no to właśnie chyba tak mam, biorę wyraz, sprawdzam każdą litere wyrazu z literą usera, jeśli false to zaczynam od początku..
P-144488
sebabass
Temat założony przez niniejszego użytkownika
» 2016-02-05 10:51:16
Wydaje mi się, że moze problem jest polega na tym, że program pobiera wyrazy z txt jako jednego stringa a nie jako tabele stringow, ale nie wiem czy jest taka możliwość..
P-144489
pekfos
» 2016-02-05 10:56:36
Wydaje mi się, że moze problem jest polega na tym, że program pobiera wyrazy z txt jako jednego stringa
Masz wszystkie wyrazy w jednej linii?

moze problem jest polega na tym
Jaki problem? Jedyny podany tu problem polega na tym, że nie wiesz jak zapisać pętlę. Może byś się tak zdecydował na jakieś konkretne pytania..?
P-144490
sebabass
Temat założony przez niniejszego użytkownika
» 2016-02-05 11:01:41
Nie. każdy wyraz jest w nowej linii.

Okej, moje pytanie jest takie: Jak zapisać tę pętle, która porówna mi litery wyrazu z literami użytkownika i stwierdzi czy są takie same czy nie.
P-144491
pekfos
» 2016-02-05 11:08:50
Na to już dostałeś odpowiedź.
P-144492
« 1 » 2
  Strona 1 z 2 Następna strona