funkcja rand oraz instrukcja switch

0

Witam, napisałem wstępnie dwa programy, jednak w jednym i drugim mam mały problem.
1.

 #include <stdlib.h>
#include <stdio.h>
#include <time.h>
int main ()
{
 srand(time(0));
 float a,b,c,w,z;
 a=rand()%39+10;
 b=rand()%39+10;
 c=rand()%39+10;
 char samochod [100];
 printf("Podaj nazwe samochodu :\n");
 scanf("%s",&samochod);
 printf("A wynosi: %f\n",a);
 printf("B wynosi: %f\n",b);
 printf("C wynosi: %f\n",c);
 if(a*b*c>3000)
 {
  z=a*b*c;
  printf("Iloczyn liczb wynosi: %f\n",z);
  w=a+b+c;
  printf("Suma liczb wynosi: %f\n",w);
  }
  else
  printf("Twoja nazwa samochodu: %s,&samochod");
system("PAUSE");
return 0;
}

Program ma losować 3 liczby rzeczywiste z przedziału <10,30). Z tego co nam wytłumaczyli na zajęciach odpowiada za to funkcja rand:
a=rand()%k+l;
k- liczba końcowa (k obliczamy z następującego wzoru: k=k-1+l)
l- liczba początkowa

Problem polega na tym, że wydaje się, że rand jest dobrze zadeklarowany, a losuje liczby z poza tego przedziału.

#include <stdlib.h>
#include <stdio.h>
int main ()
{
 float a,b,w,z,i;
 char imie [100];
 char symbol [1];
 printf("Podaj a :\n");
 scanf("%f",&a);
 printf("Podaj b :\n");
 scanf("%f",&b);
 printf("Podaj symbol :\n");
 scanf("%s",&symbol);
switch(symbol)
{
	case symbol==x:
		w=a*b;
		printf("Iloczyn liczb wynosi: %f\n",w);
		break;
	case symbol==d:
		z=(a+1)/(y-1);
		printf("Wyrazenie wynosi: %f\n",z);
		break;
	case symbol==k:
		 printf("Podaj imie :\n");
 		scanf("%s",&imie);
 		printf("Witaj %s,&imie");
		break;
 	default:
 		break;
}
system("PAUSE");
return 0;
} 

W powyższym programie mam problem z instrukcją switch. Program ma wczytywać dwie liczby rzeczywiste oraz symbol. Jeżeli symbolem jest 'x' to wyświetli iloczyn wczytanych liczb, jeżeli symbolem jest 'd' to wyświetli wartość danego wyrażenia itd...

Szczerze to nie wiem, jak użyć wspomnianej instrukcji switch, prosiłbym o wytłumaczenie na moim przykładzie.

1

39 + 10 to jest rowne 49 wiec losujesz liczby z przedzialu od 10 do 49
powinno byc %20 + 10

a powiedz mi co to znaczy
symbol == d ?

1

Z przedziału <10,30): rand()%20+10;
printf("Twoja nazwa samochodu: %s",samochod);
Ad.2.

 char symbol;
 ...
 scanf(" %c",&symbol); // bardzo ważna spacja przed procentem
 ...
 switch(symbol)
 ...
        case 'x':
 ...
        case 'd':
 ...
        case 'k':
 ...
0

Dzięki za pomoc. Programy działają poprawnie :)

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