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

kompilacja bez błędów, ale albo błędne wyniki, albo zawiesza się program...

Ostatnio zmodyfikowano 2010-11-17 09:16
Autor Wiadomość
pawelekster
Temat założony przez niniejszego użytkownika
kompilacja bez błędów, ale albo błędne wyniki, albo zawiesza się program...
» 2010-11-17 02:16:54
Jeżeli ktoś mógłby ocenić poprawność kodu, to byłbym wdzięczny:

C/C++
/*
zwróć najczęściej występującą literę w tekście
char najczesciej_wystepujaca(char tekst[]);

*/
#include "stdafx.h"
#include<stdio.h>
#include<iostream>
#include<conio.h>

using namespace std;
char najczesciej_wystepujaca( char tekst[] );


int main()
{
    char zdanie[] = "ala ma kota";
   
    cout << najczesciej_wystepujaca( zdanie ) << endl << endl;
   
    return 0;
}
char najczesciej_wystepujaca( char tekst[] )
{
    int max = 0;
    char max_litera = 'a';
   
    for( char litera = 'a'; litera <= 'z'; litera++ )
    {
        int i = 0;
        int licznik = 0;
       
        for( int i = 0; tekst[ i ] != '\n'; i++ )
       
             if( tekst[ i ] == litera ) licznik++;
       
       
       
        if( licznik > max )
        {
            max = licznik;
            max_litera = litera;
        };
       
    };
    return max_litera;
}
P-24079
F90M
» 2010-11-17 05:29:41
0. kod umieszczaj między znacznikami
[cpp][/cpp]

1. Porównujesz wskaźnik, a raczej to co wskazuje, zamiast konkretnego elementu tablicy.
2. Ostatnim elementem twojej tablicy "tekst" nie będzie znak nowej linii '\n' tylko 0 (zero, nie jako znak ale cyfra).
3. Dla ścisłości, wystarczy tylko nagłówek iostream.

Gotowiec
C/C++
#include<iostream>
using namespace std;

char NWLwCZ( char[] );

int main()
{
    char cTekst[] = "Hallo World";
    cout << NWLwCZ( cTekst );
}

char NWLwCZ( char cTablicaZnakow[] )
{
    char cLitera;
    int iLicznikLiter[ 26 ] = { };
   
    for( int a = 0; cTablicaZnakow[ a ] != 0; ++a )
    if( cTablicaZnakow[ a ] >= 97 && cTablicaZnakow[ a ] <= 122 )
         ++iLicznikLiter[ cTablicaZnakow[ a ] - 97 ];
    else if( cTablicaZnakow[ a ] >= 65 && cTablicaZnakow[ a ] <= 90 )
         ++iLicznikLiter[ cTablicaZnakow[ a ] - 65 ];
   
    for( int a = 0, iNajczestsza = 0; a < 26; ++a )
    {
        if( iLicznikLiter[ a ] > iLicznikLiter[ iNajczestsza ] )
             iNajczestsza = a;
       
        cLitera = iNajczestsza + 97;
    }
   
    return cLitera;
}
P-24080
pawelekster
Temat założony przez niniejszego użytkownika
Dziękuję...
» 2010-11-17 08:20:34
Przeanalizuję to sobie :)
Właśnie za późno się zorientowałem, że trzeba przy cytowaniu wstawiać znaczniki.
Pozdrawiam:)
P-24081
pawelekster
Temat założony przez niniejszego użytkownika
jednak kompilator krzyczy...
» 2010-11-17 08:54:50

------ Build started: Project: litery_forum, Configuration: Debug Win32 ------
Compiling...
stdafx.cpp
Compiling...
litery_forum.cpp
c:\users\ewa\documents\visual studio 2008\projects\litery_forum\litery_forum\litery_forum.cpp(1) : warning C4627: '#include <iostream>': skipped when looking for precompiled header use
        Add directive to 'stdafx.h' or rebuild precompiled header
c:\users\ewa\documents\visual studio 2008\projects\litery_forum\litery_forum\litery_forum.cpp(34) : fatal error C1010: unexpected end of file while looking for precompiled header. Did you forget to add '#include "stdafx.h"' to your source?
Build log was saved at "file://c:\Users\Ewa\Documents\Visual Studio 2008\Projects\litery_forum\litery_forum\Debug\BuildLog.htm"
litery_forum - 1 error(s), 1 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

Mam Visual C++ Express Edition
P-24082
Elaine
» 2010-11-17 09:15:48
Wyłącz precompiled headers albo dołącz stdafx.h.
P-24084
pawelekster
Temat założony przez niniejszego użytkownika
Może mniej efektownie, ale działa...
» 2010-11-17 09:16:04
C/C++
#include "stdafx.h"
#include<iostream>
using namespace std;

char najczesciej_wystepujaca( char tekst[] );


int main()
{
    char zdanie[] = "Hallo World";
    cout << najczesciej_wystepujaca( zdanie ) << endl << endl;
   
    return 0;
}
char najczesciej_wystepujaca( char tekst[] )
{
    int max_wyst = 0;
    char max_litera;
    for( char litera = 'a'; litera <= 'z'; litera++ )
    {
        int licznik = 0;
        for( int i = 0; tekst[ i ] != 0; i++ )
       
             if( tekst[ i ] == litera ) licznik++;
       
        if( licznik > max_wyst )
        {
            max_wyst = licznik;
            max_litera = litera;
        };
       
    };
    return max_litera;
}

Z tym zerem na końcu pomogło :)
P-24085
« 1 »
  Strona 1 z 1