Program z wpisaniem zmiennych z lilii poleceń

0

Program niby działa ale wyskakuje błąd kiedy w linii pleceń(zaraz za nazwą programu) nie wpiszę danych lub wpiszę jedną. Chciałbym temu jakoś zaradzić w taki sposób, że kiedy użytkownik ich nie wpisze lub wpiszę tylko jedną to program ponownie poprosi o wpisanie danych lub jednej pominiętej, tylko niestety nie wiem jak temu zaradzić :/

Z góry dziękuje za pomoc :)

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

float silnia(float n)                            /*obliczanie silni z n*/
{
    int i;
    float wynik = 1;
    for(i=2; i<=n; i++)
        wynik *= i;
    return wynik;
}

double XdoN(float x, float n)                  /*obliczanie x do potegi n*/
{

    return pow(x,n);
}
double szereg(float x, float nliczba)  /*obliczanie szeregu Maclaurina*/
{
    double suma=0;
    int n;
    for(n=0;n<=nliczba;n++)
    {
        suma=suma+pow((-1),n)*(XdoN(x,2*n)/silnia(2*n));
    }

    return suma;
}

int main(int argc, char*argv[])
{
float x=0,n=0;
int i=0;
float wynik;
    sscanf (argv[1],"%f",&x);           /*wprowadzenie linii polecen*/
    sscanf (argv[2],"%f",&n); 
    printf("argc=%d\n", argc);
    
    for(i=0; i<argc; ++i) {
        printf("argv[%d]=%s\n", i, argv [i]);
	}
printf("x=%f\n",x);
printf("n=%f\n",n);
printf("silnia=%f\n",silnia(n));
printf("x do n=%f\n",XdoN(x,n));
printf("szereg=%f\n",szereg(x,n));

return 0;
}
 
0

Sprawdź czy argc jest równe dokładnie 3. Jak nie jest - wyświetl komunikat i zakończ program.

0

A nie ma innej opcji żeby program dalej działał ale prosił o wpisanie danych ?

1

Byle jaki kurs pierwsze parę stron przeczytać a nie będziesz już zadawać tak głupich pytań:

    if(argc<3)
      {
       printf("Podaj n: ");
       scanf("%f",&n);
      }
    else sscanf(argv[2],"%f",&n); 
    if(argc<2)
      {
       printf("Podaj x: ");
       scanf("%f",&x);
      }
    else sscanf(argv[1],"%f",&x);

Zastanów się nad otrzymaniem i-go elementu na podstawie poprzedniego:

sum=item=x; 
for(i=1;i<=n;++i)
  {
   item*=-x*x/((i+1)*(i+2));
   sum+=item;
  }

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