| EMTec Temat założony przez niniejszego użytkownika | wypisanie najwiekszej sumy cyfr z tablicy  » 2016-01-07 11:53:37 Witam mam tablice generowana na dwa sposoby : cout << "- podanie wartosci elementow ciagu z klawiatury";
 
 cout << "\n  2 ";
 
 cout << "- podanie zakresu i wygenerowanie ciagu liczb wylosowanych z zakresu";
potrzebuje pomocy jak napisac  zeby z tej tablicy wybierał liczbe o najwiekszej sumie  cyfr ?? Jakaś podpowiedź lub link odsyłający do kursu mile widziane . | 
|  | 
| mateczek | » 2016-01-07 12:48:24 Z czym masz problem?? z policzeniem sumy cyfr czy z wyznaczeniem maksymalnej wartości tablicy ?? liczenie sumy cyfr liczby int a!!! #include <iostream>
 using namespace std;
 
 int main()
 {
 int a = 1111;
 int suma = 0, cyfra;
 while( a ) {
 cyfra = a % 10;
 suma += cyfra;
 a = a / 10;
 }
 cout << suma << endl;
 
 }
 
wyznaczenie maksymalnej warosci z tablicy #include <iostream>
 using namespace std;
 
 int main() {
 int tab[ 5 ] { 3, 1, 4, 5, 2 };
 int max = tab[ 0 ];
 for( int i = 0; i < 5; i++ ) {
 if( tab[ i ] > max ) max = tab[ i ];
 
 }
 
 cout << max << endl;
 
 
 }
 | 
|  | 
| michal11 | » 2016-01-07 13:49:26 napisz sobie funkcję na obliczanie sumy cyfr (kod masz wyżej), potem potrzebujesz 2 zmiennych pomocniczych jednej do przechowywania aktualnej największej sumy cyfr i drugiej do przechowywania indeksu liczby, o największej sumie cyfr, w tablicy . Jak już to masz to lecisz forem po całej tablicy, obliczasz sumę cyfr dla danego elementu (funkcja) i sprawdzasz czy jest większy od aktualnie zapamiętanej sumy, jeżeli tak to aktualizujesz indeks i sumę. Mam nadzieję, że nie namieszałem, w zasadzie to musisz połączyć powyższe kody. Najlepiej to wstaw swój kod i zobaczymy z czym masz problem. | 
|  | 
| EMTec Temat założony przez niniejszego użytkownika | » 2016-01-07 14:26:27 #include <iostream>  #include <ctime>
 
 #include <limits>
 
 
 #include <cstdlib>
 
 #include <vector>
 
 #include <algorithm>
 
 #include <string>
 
 #include <limits>
 
 
 #undef max
 
 using namespace std;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 void ZlyWybor( string tekstBledu ) {
 
 
 
 cout << "-----------------------------------------------------------\n";
 }
 
 int mWybierzOpcjeMenuSposob()
 {
 int sposob = 0;
 int ile = 0;
 
 
 do
 {
 if( ile > 0 ) {
 ZlyWybor( "Zly wybor! Prosze wybrac ponownie." );
 }
 
 
 cout << "\n  1 ";
 
 cout << "- podanie wartosci elementow ciagu z klawiatury";
 
 
 cout << "\n  2 ";
 
 cout << "- podanie zakresu i wygenerowanie ciagu liczb wylosowanych z zakresu";
 
 
 cout << "\n  3 ";
 
 cout << "- Wyjscie z programu";
 
 cout << "\n\n Wpisz wybrana ";
 
 cout << "opcje";
 
 cout << ": ";
 cin >> sposob;
 
 cin.clear();
 std::cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' );
 
 ile++;
 } while(( sposob < 1 ) ||( sposob > 3 ) );
 
 return sposob;
 }
 
 
 
 std::vector < int > stworzTablica1( int sposob ) {
 std::vector < int > tablica1;
 int n, a, b, c;
 
 cout << "\nPodaj z ilu liczb ma sie skladac ciag: ";
 cin >> n;
 while( cin.fail() ) {
 ZlyWybor( "Zly wybor! Prosze podac liczbe calkowita: " );
 cin.clear();
 std::cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' );
 cin >> n;
 }
 
 switch( sposob ) {
 case 1:
 cout << "\nTeraz podaj kolejno te " << n << " liczb/y: ";
 cout << "\n (podaj liczbe i zakceptuj enterem\n LUB podaj kilka liczb oddzielanych spacja  i na koncu wybierz enter) ";
 for( int j = 1; j <= n; j++ ) {
 cin >> a;
 while( cin.fail() ) {
 ZlyWybor( "Zly wybor! Prosze podac liczbe calkowita: " );
 cin.clear();
 std::cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' );
 tablica1.clear();
 j = 1;
 cin >> a;
 }
 tablica1.push_back( a );
 }
 break;
 case 2:
 cout << "\nTeraz podaj wartosc poczatkowa ciagu: ";
 cin >> a;
 while( cin.fail() ) {
 ZlyWybor( "Zly wybor! Prosze podac liczbe calkowita: " );
 cin.clear();
 cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' );
 cin >> a;
 }
 cout << "\nPodaj wartosc koncowa ciagu wieksza od wartosci poczatkowej: ";
 cin >> b;
 while(( cin.fail() ) ||( b < a ) ) {
 ZlyWybor( "Zly wybor! Prosze podac liczbe calkowita wieksza od wartosci poczatkowej: " );
 cin.clear();
 cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' );
 cin >> b;
 }
 srand( unsigned( time( 0 ) ) );
 for( int i = 0; i < n; i++ ) {
 do
 {
 c = a + rand() %( b - a + 1 );
 } while( std::find( tablica1.cbegin(), tablica1.cend(), c ) != tablica1.cend() );
 
 tablica1.push_back( c );
 }
 break;
 }
 
 return tablica1;
 }
 
 int najwiekszaSumaCyfr1( std::vector < int > tablica1 )
 {
 
 
 
 
 
 
 
 int c;
 int suma = 0, cyfra;
 while( c )
 {
 cyfra = c % 10;
 suma += cyfra;
 c = c / 10;
 
 cout << suma << endl;
 
 
 
 
 
 }
 
 return c;
 
 
 }
 
 int main()
 {
 int sposob;
 
 std::vector < int > tablica1;
 int najwiekszaSumaCyfr;
 
 
 
 cout << "\nETAP I : WYBOR SPOSOBU GENEROWANIA LICZB\n";
 
 sposob = mWybierzOpcjeMenuSposob();
 if( sposob == 3 )
 exit( 0 );
 
 cout << " Wybrana opcja: " << sposob << "\n";
 cout << " Przechodzimy do kolejnego etapu";
 
 system( "cls" );
 
 
 
 cout << "\nETAP II : UTWORZENIE CIAGU LICZB\n";
 
 tablica1 = stworzTablica1( sposob );
 cout << "\nTablica stworzona, jej elementy to:\n";
 for( auto i = tablica1.cbegin(); i != tablica1.cend(); ++i )
 cout << * i << " ";
 
 cout << "\n";
 system( "pause" );
 cout << " Przechodzimy do kolejnego etapu";
 
 system( "cls" );
 
 
 
 cout << "\nETAP III: ZNALEZIENIE najwiekszej sumy cyfr n";
 
 
 
 
 else {
 cout << "\n Najwieksza suma cyfr tego ciagu:" << najwiekszaSumaCyfr << "\n";
 }
 
 
 cout << "\nKONIEC PROGRAMU\n";
 
 system( "pause" );
 
 }
 
 | 
|  | 
| mateczek | » 2016-01-07 15:31:08 #include <iostream>#include<vector>
 using namespace std;
 
 
 int sumaCyfr( int liczba ) {
 int suma = 0, cyfra;
 while( liczba )
 {
 cyfra = liczba % 10;
 suma += cyfra;
 liczba = liczba / 10;
 }
 return suma;
 }
 
 
 
 int najwiekszaSumaCyfr1( std::vector < int > & tablica1 )
 {
 int tempSuma, sumaMax = 0, liczba_oSumieMax = 0;
 for( int a: tablica1 ) {
 tempSuma = sumaCyfr( a );
 if( tempSuma > sumaMax ) {
 sumaMax = tempSuma;
 liczba_oSumieMax = a;
 }
 }
 
 
 return liczba_oSumieMax;
 
 }
 
 
 int main()
 {
 vector < int > tab { 123, 125, 126, 99 };
 cout << najwiekszaSumaCyfr1( tab ) << endl;
 }
 
 | 
|  | 
| EMTec Temat założony przez niniejszego użytkownika | » 2016-01-08 12:00:50 nie wiem gdzie blad jest i na koncu musze zmienic etap 3 i nie mam teraz pojecia jak #include <iostream>  #include <ctime>
 
 #include <limits>
 
 
 #include <cstdlib>
 
 #include <vector>
 #include <algorithm>
 
 #include <string>
 
 #include <limits>
 
 
 #undef max
 
 using namespace std;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 void ZlyWybor( string tekstBledu ) {
 
 
 
 cout << "-----------------------------------------------------------\n";
 }
 
 int mWybierzOpcjeMenuSposob()
 {
 int sposob = 0;
 int ile = 0;
 
 
 do
 {
 if( ile > 0 ) {
 ZlyWybor( "Zly wybor! Prosze wybrac ponownie." );
 }
 
 
 cout << "\n  1 ";
 
 cout << "- podanie wartosci elementow ciagu z klawiatury";
 
 
 cout << "\n  2 ";
 
 cout << "- podanie zakresu i wygenerowanie ciagu liczb wylosowanych z zakresu";
 
 
 cout << "\n  3 ";
 
 cout << "- Wyjscie z programu";
 
 cout << "\n\n Wpisz wybrana ";
 
 cout << "opcje";
 
 cout << ": ";
 cin >> sposob;
 
 cin.clear();
 std::cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' );
 
 ile++;
 } while(( sposob < 1 ) ||( sposob > 3 ) );
 
 return sposob;
 }
 
 
 
 std::vector < int > stworzTablica1( int sposob ) {
 std::vector < int > tablica1;
 int n, a, b, c;
 
 cout << "\nPodaj z ilu liczb ma sie skladac ciag: ";
 cin >> n;
 while( cin.fail() ) {
 ZlyWybor( "Zly wybor! Prosze podac liczbe calkowita: " );
 cin.clear();
 std::cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' );
 cin >> n;
 }
 
 switch( sposob ) {
 case 1:
 cout << "\nTeraz podaj kolejno te " << n << " liczb/y: ";
 cout << "\n (podaj liczbe i zakceptuj enterem\n LUB podaj kilka liczb oddzielanych spacja  i na koncu wybierz enter) ";
 for( int j = 1; j <= n; j++ ) {
 cin >> a;
 while( cin.fail() ) {
 ZlyWybor( "Zly wybor! Prosze podac liczbe calkowita: " );
 cin.clear();
 std::cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' );
 tablica1.clear();
 j = 1;
 cin >> a;
 }
 tablica1.push_back( a );
 }
 break;
 case 2:
 cout << "\nTeraz podaj wartosc poczatkowa ciagu: ";
 cin >> a;
 while( cin.fail() ) {
 ZlyWybor( "Zly wybor! Prosze podac liczbe calkowita: " );
 cin.clear();
 cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' );
 cin >> a;
 }
 cout << "\nPodaj wartosc koncowa ciagu wieksza od wartosci poczatkowej: ";
 cin >> b;
 while(( cin.fail() ) ||( b < a ) ) {
 ZlyWybor( "Zly wybor! Prosze podac liczbe calkowita wieksza od wartosci poczatkowej: " );
 cin.clear();
 cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' );
 cin >> b;
 }
 srand( unsigned( time( 0 ) ) );
 for( int i = 0; i < n; i++ ) {
 do
 {
 c = a + rand() %( b - a + 1 );
 } while( std::find( tablica1.cbegin(), tablica1.cend(), c ) != tablica1.cend() );
 
 tablica1.push_back( c );
 }
 break;
 }
 
 return tablica1;
 }
 
 
 int najwiekszaSumaCyfr1( std::vector < int > tablica1 )
 {
 
 
 
 
 
 
 
 int sumaCyfr( int liczba )
 { <------------------TUTAJ BLAD
 int suma = 0, cyfra;
 while( liczba )
 
 {
 cyfra = liczba % 10;
 suma += cyfra;
 liczba = liczba / 10;
 }
 return suma;
 
 
 
 int najwiekszaSumaCyfr1( std::vector < int > & tablica1 )
 {
 int tempSuma, sumaMax = 0, liczba_oSumieMax = 0;
 for( int a: tablica1 )
 
 {
 tempSuma = sumaCyfr( a );
 if( tempSuma > sumaMax )
 {
 sumaMax = tempSuma;
 liczba_oSumieMax = a;
 
 
 }
 
 
 
 
 
 
 
 
 
 return liczba_oSumieMax;
 
 
 
 }
 int main()
 {
 vector < int > tab { 123, 125, 126, 99 };
 cout << najwiekszaSumaCyfr1( tab ) << endl;
 }
 
 
 
 
 
 
 
 
 
 
 
 {
 
 
 int sposob;
 
 std::vector < int > tablica1;
 int najwiekszaSumaCyfr1;
 
 
 
 cout << "\nETAP I : WYBOR SPOSOBU GENEROWANIA LICZB\n";
 
 sposob = mWybierzOpcjeMenuSposob();
 if( sposob == 3 )
 exit( 0 );
 
 cout << " Wybrana opcja: " << sposob << "\n";
 cout << " Przechodzimy do kolejnego etapu";
 
 system( "cls" );
 
 
 
 cout << "\nETAP II : UTWORZENIE CIAGU LICZB\n";
 
 tablica1 = stworzTablica1( sposob );
 cout << "\nTablica stworzona, jej elementy to:\n";
 for( auto i = tablica1.cbegin(); i != tablica1.cend(); ++i )
 cout << * i << " ";
 
 cout << "\n";
 system( "pause" );
 cout << " Przechodzimy do kolejnego etapu";
 
 system( "cls" );
 
 
 {
 
 
 cout << "\nETAP III: ZNALEZIENIE Najwiekszej sumy cyfr  \n";
 
 najwiekszaSumaCyfr = najwiekszaSumaCyfr1( tablica1 );
 if( najwiekszaSumaCyfr == std::numeric_limits < int >::max() )
 
 else {
 cout << "\n Najwieksza suma cyfr tego ciagu:" << najwiekszaSumaCyfr << "\n";
 }
 cout << "\nKONIEC PROGRAMU\n";
 
 system( "pause" );
 
 } <------TUTAJ B Ł Ą D mam i wyzej
 
 | 
|  | 
| mateczek | » 2016-01-08 12:58:49 dałem Ci kompletny kod rozwiązujący problem wyszukania liczby w kontenerze vector!!!https://youtu.be/bSJvu4Yo93M nie można bez sensu kopiować kodu programu i wklejać go w całości do funkcji i jeszcze pytać co jest nie tak Prawdopodobnie cały ten program jest nie tak skoro składa się z taki powklejanych kawałków!!!  | 
|  | 
| EMTec Temat założony przez niniejszego użytkownika | » 2016-01-11 13:05:11 Witam moze mi ktos sprawdzić program na windowsie ja pracuje na macu i nie wiem czy bedzie działać a jesli ktos widzi jakis błąd  to prosze o info , ale na moim lapku dobrze działa mam oczekiwany efekt do zaliczenia  . Z góry dzieki i pozdrawiam Mateusz .   #include <iostream>  #include <ctime>
 
 #include <limits>
 
 
 #include <cstdlib>
 
 #include <vector>
 #include <algorithm>
 
 #include <string>
 
 #include <limits>
 
 
 #undef max
 
 using namespace std;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 void ZlyWybor( string tekstBledu ) {
 
 
 
 cout << "-----------------------------------------------------------\n";
 }
 
 int mWybierzOpcjeMenuSposob()
 {
 int sposob = 0;
 int ile = 0;
 
 
 do
 {
 if( ile > 0 ) {
 ZlyWybor( "Zly wybor! Prosze wybrac ponownie." );
 }
 
 
 cout << "\n  1 ";
 
 cout << "- podanie wartosci elementow ciagu z klawiatury";
 
 
 cout << "\n  2 ";
 
 cout << "- podanie zakresu i wygenerowanie ciagu liczb wylosowanych z zakresu";
 
 
 cout << "\n  3 ";
 
 cout << "- Wyjscie z programu";
 
 cout << "\n\n Wpisz wybrana ";
 
 cout << "opcje";
 
 cout << ": ";
 cin >> sposob;
 
 cin.clear();
 std::cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' );
 
 ile++;
 } while(( sposob < 1 ) ||( sposob > 3 ) );
 
 return sposob;
 }
 
 
 
 std::vector < int > stworzTablica1( int sposob ) {
 std::vector < int > tablica1;
 int n, a, b, c;
 
 cout << "\nPodaj z ilu liczb ma sie skladac ciag: ";
 cin >> n;
 while( cin.fail() ) {
 ZlyWybor( "Zly wybor! Prosze podac liczbe calkowita: " );
 cin.clear();
 std::cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' );
 cin >> n;
 }
 
 switch( sposob ) {
 case 1:
 cout << "\nTeraz podaj kolejno te " << n << " liczb/y: ";
 cout << "\n (podaj liczbe i zakceptuj enterem\n LUB podaj kilka liczb oddzielanych spacja  i na koncu wybierz enter) ";
 for( int j = 1; j <= n; j++ ) {
 cin >> a;
 while( cin.fail() ) {
 ZlyWybor( "Zly wybor! Prosze podac liczbe calkowita: " );
 cin.clear();
 std::cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' );
 tablica1.clear();
 j = 1;
 cin >> a;
 }
 tablica1.push_back( a );
 }
 break;
 case 2:
 cout << "\nTeraz podaj wartosc poczatkowa ciagu: ";
 cin >> a;
 while( cin.fail() ) {
 ZlyWybor( "Zly wybor! Prosze podac liczbe calkowita: " );
 cin.clear();
 cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' );
 cin >> a;
 }
 cout << "\nPodaj wartosc koncowa ciagu wieksza od wartosci poczatkowej: ";
 cin >> b;
 while(( cin.fail() ) ||( b < a ) ) {
 ZlyWybor( "Zly wybor! Prosze podac liczbe calkowita wieksza od wartosci poczatkowej: " );
 cin.clear();
 cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' );
 cin >> b;
 }
 srand( unsigned( time( 0 ) ) );
 for( int i = 0; i < n; i++ ) {
 do
 {
 c = a + rand() %( b - a + 1 );
 } while( std::find( tablica1.cbegin(), tablica1.cend(), c ) != tablica1.cend() );
 
 tablica1.push_back( c );
 }
 break;
 }
 
 return tablica1;
 }
 
 
 
 
 
 
 
 
 
 
 int sumaCyfr( int tablica1 ) {
 int suma = 0, cyfra;
 while( tablica1 )
 {
 cyfra = tablica1 % 10;
 suma += cyfra;
 tablica1 = tablica1 / 10;
 }
 return suma;
 }
 
 
 
 int najwiekszaSumaCyfr1( std::vector < int > & tablica1 )
 {
 int tempSuma, sumaMax = 0, liczba_oSumieMax = 0;
 for( int a: tablica1 )
 {
 tempSuma = sumaCyfr( a );
 if( tempSuma > sumaMax )
 {
 sumaMax = tempSuma;
 liczba_oSumieMax = a;
 }
 }
 
 return sumaMax;
 
 }
 int main()
 
 {
 
 
 int sposob;
 
 std::vector < int > tablica1;
 
 int najwiekszaSumaCyfr;
 
 
 
 cout << "\nETAP I : WYBOR SPOSOBU GENEROWANIA LICZB\n";
 
 sposob = mWybierzOpcjeMenuSposob();
 if( sposob == 3 )
 exit( 0 );
 
 cout << " Wybrana opcja: " << sposob << "\n";
 cout << " Przechodzimy do kolejnego etapu";
 
 system( "cls" );
 
 
 
 cout << "\nETAP II : UTWORZENIE CIAGU LICZB\n";
 
 tablica1 = stworzTablica1( sposob );
 cout << "\nTablica stworzona, jej elementy to:\n";
 for( auto i = tablica1.cbegin(); i != tablica1.cend(); ++i )
 cout << * i << " ";
 
 cout << "\n";
 system( "pause" );
 cout << " Przechodzimy do kolejnego etapu";
 
 system( "cls" );
 
 
 
 
 
 cout << "\nETAP III: ZNALEZIENIE Najwiekszej sumy cyfr  \n";
 najwiekszaSumaCyfr = najwiekszaSumaCyfr1( tablica1 );
 cout << "\n Najwieksza Suma Cyfr : " << najwiekszaSumaCyfr << "\n";
 
 
 
 
 
 
 
 return 0;
 }
 | 
|  | 
| « 1 »  2 |