» »

C++ palindrom program

C++ palindrom program

i33a ::

Poizkušal sem napisati palindrom program, a ne deluje tako kot bi si želel. Opazite kakšno napako v kodi, zaradi katere daje napačne rezultate?
#include <stdio.h>
#include <string.h>

int main ()
{
  int a;
  char in[75];
  int b;
  gets (in);
  b = strlen(in);
  bool palindrom = true;
  for(int i = 0; i <= b; i++){
        if(in[i] != in[b-i]){
             palindrom = false;
             }
        }
        if(palindrom == true){
             printf("Je palindrom");
             }
             else{
                  printf("Ni palindrom");
                  }
        
  scanf("%d", &a);
  return 0;
}

Lp

arjan_t ::

na prvi pogled: i <= b in in[b-i]

i33a ::

v kaj bi pa moral spremeniti ti dve stvari?

robbe ::

strlen ti vrača dolžino niza in ker ima niz prvi znak v tableli na mestu 0, ima zadnjega na strlen-1.
Pa zamik popravi :)

i33a ::

Ups.. tole sem pa res spregledal...
Kateri zamik misliš?

pecorin ::

pa preverjas lahko do b/2, ker zdaj preverjas vsakega dvakrat.

ERGY ::

Kot prvo to ni c++.

foxstyla ::

private void button1_Click(object sender, EventArgs e)
{
string palindrom = "";
string beseda = textBox1.Text;
for (int stevec = beseda.Length - 1 ; stevec >= 0; stevec--)
{
MessageBox.Show(palindrom += beseda[stevec]);
}
}


Moja rešitev palindroma.

smoke ::

Zakaj bi komplicirali:


#include <iostream>
#include <string>

using namespace std;

int main(int argc, char argv[])
{
    string str;
    cout << "Vpisi string: ";
    getline(cin, str);

    auto i = str.begin();
    auto j = str.rbegin();
    auto sredina = str.begin() + (str.length() / 2);

    while(i != sredina) {
        if (*i != *j) {
            cout << "Ni" << endl;
            return -1;
        }
        ++i; ++j;
    }

    cout << "Je" << endl;

    return 0;
}


:)

mallard ::

Se gremo thread digging? :)

#include <iostream>
#include <string>
#include <algorithm>

bool je_palindrom(const std::string& str)
{
    return std::equal(str.begin(),
                      str.begin() + str.length()/2 + 1,
                      str.rbegin());
}

int main()
{
    std::string niz;
    while (std::getline(std::cin, niz))
        std::cout << (je_palindrom(line) ? "Je" : "Ni") << " palindrom\n";
}


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Niti - segmentation fault

Oddelek: Programiranje
211971 (818) galu
»

[C] Procesi

Oddelek: Programiranje
6967 (876) Cvenemir
»

[C] Vsota števil v polju

Oddelek: Programiranje
51266 (1204) Cvenemir
»

c++ naloge

Oddelek: Programiranje
92851 (2475) l0g1t3ch
»

C osnova

Oddelek: Programiranje
221539 (1054) RunoTheDog

Več podobnih tem