Moozy Temat założony przez niniejszego użytkownika |
Rozbijanie ciagu znakow » 2016-04-01 09:50:02 Mam problem. Jak rozbic ciag znakow podany z klawiatury np. "123456", tak zebym mogl wykonywac zadania na pojedynczych cyfrach, np. pomnozyc pierwsza z ostatnia, a reszte dodac? Nie umiem nic wykombinowac :/ program ma byc bez stringa czy tablic |
|
mateczek |
» 2016-04-01 11:05:16 Sposób 1. podawaj cyfry po spacji:P #include <iostream> using namespace std;
int main() { int a, b, c, d, e, f, g, h; cin >> a >> b >> c >> d >> e >> f >> g >> h; cout << a * h + b + c + d + e * f - g << endl; }
Sposób 2. wczytaj stringa i przeleć go pętlą for #include <iostream> using namespace std;
int main() { string s = "123456789"; for( char znak: s ) { int cyfra = znak - '0'; cout << cyfra << endl; } }
|
|
michal11 |
» 2016-04-01 12:15:15 A wiesz z góry ile będzie tych znaków ? |
|
Moozy Temat założony przez niniejszego użytkownika |
» 2016-04-01 18:04:47 Sam podajesz ilosc z klawiatury, mozesz wpisac 3, a mozesz wpisac 10 |
|
michal11 |
» 2016-04-01 18:15:27 Tak, ale czy masz coś takiego: cout << "Podaj ile znakow wczytać: "; cin >> ileznakow;
czy cos takiego: while( cin >> znak ) [ cpp ]
albo inne podobne dynamiczne wczytywanie znak ó w ? |
|
Moozy Temat założony przez niniejszego użytkownika |
» 2016-04-01 18:32:19 i nie ile znakow, tylko odrazu liczba np. 248184 |
|
mokrowski |
» 2016-04-01 19:09:56 Brak użycia tablicy i stringa... Ale wygląda "durnowato" :-/ #include <cstdio> #include <cstdlib> #include <cassert>
unsigned input_value() { unsigned value = 0; do { printf( "Podaj liczbę całkowitą większą niż 9: " ); if( scanf( "%u", & value ) != 1 ) { scanf( "%*[^\n]%*c" ); fprintf( stderr, "To ma być liczba!\n" ); printf( "Nie odpuszczę. " ); } } while( value <= 9 ); return value; } char * int_to_str( unsigned value, size_t len ) { char * my_str =( char * ) malloc( len + 1 ); if( my_str == NULL ) { fprintf( stderr, "Problem z alokacją pomięci\n" ); exit( EXIT_FAILURE ); } snprintf( my_str, len + 1, "%d", value ); return my_str; }
void process_str( char * my_str, size_t len ) { assert( len > 1 ); unsigned val_mul =( *( my_str ) - '0' ) *( *( my_str + len - 1 ) - '0' ); int sum = 0; for( size_t i = 1; i <( len - 1 ); ++i ) { sum += *( my_str + i ) - '0'; } printf( "Cyfra 1 i ostatna przemnożona to: %u\n", val_mul ); printf( "Suma od 2 do przedostatniego to: %u\n", sum ); }
int main() { unsigned value = input_value(); size_t len; printf( "Podałeś liczbę: " ); printf( "%u%n\n", value, & len ); char * my_str = int_to_str( value, len ); process_str( my_str, len ); free( my_str ); }
|
|
Gibas11 |
» 2016-04-01 19:23:41 #include <cmath> #include <iostream> using namespace std;
int main() { uint32_t n; cin >> n; uint32_t suma = 0; double srednia; for( uint32_t i = n; i > 0; i /= 10 ) suma += i % 10; srednia = static_cast < double >( suma ) / static_cast < int >( log10( n ) + 1 ); cout << "Suma cyfr: " << suma << endl; cout << "Średnia cyfr: " << srednia << endl; return 0; }
EDIT: @up char * my_str =( char * ) malloc( len + 1 ); A to jest...? |
|
« 1 » 2 |