kompilacja bez błędów, ale albo błędne wyniki, albo zawiesza się program...
Ostatnio zmodyfikowano 2010-11-17 09:16
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:
#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; }
|
|
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 #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; }
|
|
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:) |
|
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 |
|
Elaine |
» 2010-11-17 09:15:48 Wyłącz precompiled headers albo dołącz stdafx.h. |
|
pawelekster Temat założony przez niniejszego użytkownika |
Może mniej efektownie, ale działa... » 2010-11-17 09:16:04 #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 :) |
|
« 1 » |