[C++][C] Przeniesienie kodu z C++ na C

shems1988
Użytkownik
Użytkownik
Posty: 101
Rejestracja: 30 paź 2008, o 16:17
Płeć: Kobieta
Lokalizacja: toruń

[C++][C] Przeniesienie kodu z C++ na C

Post autor: shems1988 »

Mam taki problem jak przerobić kod w C++ na C

Kod: Zaznacz cały

#include <iostream>
#include <fstream>
#include <string>
#include <conio.h>
using namespace std;
bool czyPal(string s);
int main()
{
    ofstream z;
    ifstream w;
    w.open("dane.txt");
    if(!w.is_open())
    {
        cout << "Nie znaleziono pliku dane.txt
Konczenie programu..." << endl;
        getch();
        return 0;   
    }
    z.open("zadanie4.txt");
    string slowa[1000];
    
    for(int i = 0; i < 1000; i++)
        w >> slowa[i];

    for(int i = 0; i < 1000; i++)
        if(czyPal(slowa[i]))
        {
            z << slowa[i] << endl;
            cout << slowa[i] << endl;
        }
    cout << "Wcisnij jakikolwiek klawisz aby zakonczyc...";
    getch();
}
bool czyPal(string s)
{
    for(int i = 0; i < s.length(); i++)
    {
        if(s[i] != s[s.length() - 1 - i])
            return false;        
    }
    return true;
}
Ostatnio zmieniony 10 gru 2011, o 14:54 przez Afish, łącznie zmieniany 2 razy.
Powód: poprawa zapisu
wawek91
Użytkownik
Użytkownik
Posty: 795
Rejestracja: 2 cze 2010, o 08:56
Płeć: Mężczyzna
Lokalizacja: Tarnów
Podziękował: 14 razy
Pomógł: 66 razy

[C++][C] Przeniesienie kodu z C++ na C

Post autor: wawek91 »

No ale z czym masz konkretnie problem? Chyba nie oczekujesz, że ktoś Ci przepisze ten kod? Poczytaj o operacjach na plikach w c, zamień cout na printf, cin na scanf, zamiast string zastosuj tablice char'ów.
Xitami

[C++][C] Przeniesienie kodu z C++ na C

Post autor: Xitami »

tablica slowa[] zbędna
czyPal jest kwadratowe (może kompilator to poprawi? a może nie)
for( int .... dopuszczalne dopiero w C99
shems1988
Użytkownik
Użytkownik
Posty: 101
Rejestracja: 30 paź 2008, o 16:17
Płeć: Kobieta
Lokalizacja: toruń

[C++][C] Przeniesienie kodu z C++ na C

Post autor: shems1988 »

Witam, nie bardzo to rozumiem, czy ktoś mógłby wytłumaczyć mi krok po kroku jak mam to zrobic?
Afish
Moderator
Moderator
Posty: 2828
Rejestracja: 15 cze 2008, o 15:45
Płeć: Mężczyzna
Lokalizacja: Seattle, WA
Podziękował: 3 razy
Pomógł: 356 razy

[C++][C] Przeniesienie kodu z C++ na C

Post autor: Afish »

Musisz się pozbyć tego, czego w języku C nie ma. Na przykład nie ma strumieni. Czym jest zastąpić?
Xitami

[C++][C] Przeniesienie kodu z C++ na C

Post autor: Xitami »

Kod: Zaznacz cały

#include <iostream>
#include <fstream>
#include <string>
#include <conio.h>
using namespace std;
zastąp

Kod: Zaznacz cały

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

zamiast s.length() będzie strlen(s)
wcześniej zwróciłem uwagę na słabo napisaną funkcję czyPal() i na to że tablica slowa[] jest zbędna
zamiast for( int i...., będzie for( i..., a i musi być zdefiniowane wcześniej
shems1988
Użytkownik
Użytkownik
Posty: 101
Rejestracja: 30 paź 2008, o 16:17
Płeć: Kobieta
Lokalizacja: toruń

[C++][C] Przeniesienie kodu z C++ na C

Post autor: shems1988 »

A mógłbyś mi powiedzieć jaki tam jest błąd?
Xitami

[C++][C] Przeniesienie kodu z C++ na C

Post autor: Xitami »

jeżeli nic ci to nie mówi, że czyPal() jest kwadratowa to się tym nie przejmuj
zapomnij, że to powiedziałem
wawek91
Użytkownik
Użytkownik
Posty: 795
Rejestracja: 2 cze 2010, o 08:56
Płeć: Mężczyzna
Lokalizacja: Tarnów
Podziękował: 14 razy
Pomógł: 66 razy

[C++][C] Przeniesienie kodu z C++ na C

Post autor: wawek91 »

Jak dla mnie chodzi o to, że zamiast sprawdzać do końca czyli warunek

Kod: Zaznacz cały

i < s.length()
możesz spokojnie sprawdzać do połowy wyrazu czyli

Kod: Zaznacz cały

i < s.length()/2
Dlaczego? Ano dlatego: weźmy przykład 'kajak' (bo rozumiem, ze funkcja ma sprawdzać czy słowo jest palindromem?)
krok1:
s[0] = k =? s[5-1-0] = k tak jest równe
s[1] = a =? s[5-1-1] = a tak jest równe
s[2] = j =? s[5-1-2] = j tak jest równe

I nie musisz sprawdzać dalej bo wiesz, że s[3] = s[1] a s[4] = s[0].
Xitami

[C++][C] Przeniesienie kodu z C++ na C

Post autor: Xitami »

zauważ, że funkcja w dalszym ciągu jest kwadratowa
wawek91
Użytkownik
Użytkownik
Posty: 795
Rejestracja: 2 cze 2010, o 08:56
Płeć: Mężczyzna
Lokalizacja: Tarnów
Podziękował: 14 razy
Pomógł: 66 razy

[C++][C] Przeniesienie kodu z C++ na C

Post autor: wawek91 »

Aaa zmyliło mnie to troche bo funkcja sama w sobie nie jest kwadratowa jednak wywoływanie w kolejnym forze juz tak
Xitami

[C++][C] Przeniesienie kodu z C++ na C

Post autor: Xitami »

przypatrzyłem się lepiej,
odwołuję co powiedziałem,
czyPal() nie jest kwadratowa
jest kubiczna!!!
ODPOWIEDZ