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

[C] Usprawnienie kodu, wypisywanie liczb nieparzystych z dowolnego przedziału.

Ostatnio zmodyfikowano 2016-05-22 21:43
Autor Wiadomość
Master_Exploder
Temat założony przez niniejszego użytkownika
[C] Usprawnienie kodu, wypisywanie liczb nieparzystych z dowolnego przedziału.
» 2016-05-21 15:24:09
Cześć.
Dostałem zadanie napisania programu, między innymi, wypisującego liczby nieparzyste z wybranego przedziału w tablicy 100 elementowej. Ilość wypisywanych elementów zależy od przedziału (i od tego czy przedział to dwie liczby parzyste, dwie nieparzyste lub nieparzysta i parzysta) i muszę ograniczyć wypisywanie tych elementów tablicy, które nie zostały zapełnione, bo w pozostałej, niezapełnionej, części tablicy pojawiają się przypadkowe liczby.  Sposób zaprezentowany poniżej działa, ale mam wrażenie, że jest to metoda "partyzancka" i chciałbym to jakoś usprawnić. Będę wdzięczny za sugestie zmian.
C/C++
#include <stdio.h>
#define ROZ 100
void nieparzyste( int[], int, int );
int main()
{
    while( 1 )
    {
        int T[ ROZ ];
        int i, A, B;
        printf( "1:l nieparzyste\n4:wyjscie\n" );
        int operacja;
        scanf( "%d", & operacja );
        switch( operacja )
       
        {
        case 1:
            {
                printf( "Podaj przedzial liczb nieparzystych:\n" );
                scanf( "%d", & A );
                scanf( "%d", & B );
                nieparzyste( T, A, B );
                //Początek opisywanej sytuacji
                if( A % 2 == 0 )
                {
                    if( B % 2 == 0 )
                    {
                        for( i = 0; i <( B - A ) / 2; i++ )
                        {
                            printf( "%d,", T[ i ] );
                        }
                    }
                    else
                    {
                        for( i = 0; i <( B - A ) / 2 + 1; i++ )
                        {
                            printf( "%d,", T[ i ] );
                        }
                    }
                }
                else
                for( i = 0; i <( B - A ) / 2 + 1; i++ )
                {
                    printf( "%d,", T[ i ] );
                }
                printf( "\n" );
                //koniec opisywanej sytuacji
                break;
            case 4:
                {
                    goto koniec;
                    break;
                }
                default:
                {
                    printf( "nieznana operacja\n" );
                    break;
                }
            }
        }
        koniec:
        return 0;
    }
   
    void nieparzyste( int T[], int A, int B )
    {
        int i, j = 0;
        for( i = A; i <= B; i++ )
        {
            if( i % 2 != 0 )
            {
                T[ j ] = i;
                j++;
            }
        }
    }
P-148465
pekfos
» 2016-05-21 16:05:46
Po co to wszystko?
C/C++
int a, b;
scanf( "%d%d", & a, & b );

if( a % 2 == 0 )
     ++a;

for(; a <= b; a += 2 )
     printf( "%d ", a );
P-148468
Master_Exploder
Temat założony przez niniejszego użytkownika
» 2016-05-22 21:43:35
Dziękuję bardzo, jest mi głupio, że wymyślam takie "dzikie" sposoby na proste rzeczy ;p
P-148504
« 1 »
  Strona 1 z 1