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/bSJvu4Yo93Mnie 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 |