Wprowadzenie ograniczenia do funkcji

0
 #include<stdio.h> 
#include<string.h>
 
int main (int argc, char* argv[]) 
{ 
for ( ; ; )
{
char l[100], odp;
int p = 1, w = 0, s, x;  

printf("Program sluzy do konwersji liczb z systemow \nod dwojkowego do dziesietnego na dziesietny\n\nPodaj system liczbowy <2,10>:\n"); 
scanf("%d", &s);
printf("Podaj liczbe, ktora chcesz przekonwertowac:\n"); 
scanf("%s", &l);
printf("Liczba ");
printf("%s",l);
printf (" w systemie wybranym przez uzytkownika w systemie dziesietnym wynosi:\n");
int i;
for (i = strlen(l)-1; i >= 0; i--)
{
x = l[i]-'0';
w = w + x*p;
p = p*s;
}
 
printf("%d",w);
 
printf("\nCzy chcesz kontynuowac prace programu t/n?\n");
scanf("%s",&odp);
if (odp == 'n')
  break;
}

return 0;
}

chciałbym wprowadzić pewne ograniczenia do zmiennych s i l tzn. dla zmiennej s chciałbym, żeby mi blokowało dla wprowadzenia innej liczby niż z zakresu <2,10> i powtarzało polecenie wprowadzenia liczby po wprowadzeniu złej. A co do zmiennej l, czy da się zrobić tak, żeby program rozpoznawał system np. binarny i przy wprowadzeniu przykładowo 21 wyświetlał komunikat o błędzie i tak jak wcześniej powtarzał funkcje aż do skutku?

0

ad 1) widzę że masz instrukcję warunkową if i operator porównania ">=" więc kombinuj
ad 2) masz pętlę for i if oraz patrz punkt 1) - kombinuj ;)

PS. Na gotowca w pierwszym poście trochę za wcześnie :)

0

dla zmiennej s chciałbym, żeby mi blokowało dla wprowadzenia innej liczby niż z zakresu <2,10>

Wystarczy pętlę użyć z filtrowaniem wartości.

#include <stdio.h>
#include <stdbool.h>

inline bool in_range(int value, int begin, int end )
{
    return (begin <= value) && (value <= end);
}

int main()
{
    int number;

    do {
        scanf( "%d", &number );
    } while ( !in_range(number, 2, 10) );


    printf( "Przyjeta liczba to %d\n", number );

    return 0;
}

czy da się zrobić tak, żeby program rozpoznawał system np. binarny i przy wprowadzeniu przykładowo 21 wyświetlał komunikat o błędzie i tak jak wcześniej powtarzał funkcje aż do skutku?
Tu musisz mieć 2 funkcje. Najpierw pobierasz string i używasz go do funkcji, która sprawdzi czy ten ciąg składa się tylko z zer i jedynek, a następnie jeśli poprzednia funkcja zwróci informację true sprowadzasz postać tekstowa do inta. Spróbuj coś samemu zdziałać, w razie problemów pytaj.

1 użytkowników online, w tym zalogowanych: 0, gości: 1