[C] Problem z programem w c

ania1002
Użytkownik
Użytkownik
Posty: 81
Rejestracja: 6 sty 2011, o 13:11
Płeć: Kobieta
Lokalizacja: Krakow
Pomógł: 1 raz

[C] Problem z programem w c

Post autor: ania1002 »

Kod: Zaznacz cały

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

float dzieci ( int w, int l, int d){
      float y;
      y=(-0./10*w)+(15./100*l)+(2./100*d);
      return y;
      }
int main(void)
{
    int n,i;
    printf("Podaj liczbe badanych kobiet:
");
    scanf("%d",&n);
    float w[n], l[n], d[n];
    printf("Podaj wysztalcenie w latach dla kazdej kobiety:
");
    for(i=0;i<n;i++){
                     scanf("%f",&w[i]);
                     }
                     printf("Podaj wiek kazdej kobiety z przedzialu: 20-40 lat:
");
                     for(i=0;i<n;i++){
                                      scanf("%f",&l[i]); }
                                      

Musze umieścić warunek if za trzecia linijką od końca, który sprawdza czy wczytana kobieta ma lat z przedziału 20-40 lat. Jak to zrobic?
Ostatnio zmieniony 6 wrz 2011, o 11:26 przez Afish, łącznie zmieniany 2 razy.
Powód: Poprawa wiadomości - kod programu umieszczaj w tagach [code].
sonicwork
Użytkownik
Użytkownik
Posty: 67
Rejestracja: 3 wrz 2010, o 00:38
Płeć: Mężczyzna
Lokalizacja: Polska
Podziękował: 2 razy
Pomógł: 1 raz

[C] Problem z programem w c

Post autor: sonicwork »

Kod: Zaznacz cały

if( "warunek"){
"instrukcje do wypełnienia jeśli warunek spełniony"
}
lub

Kod: Zaznacz cały

if( "warunek"){
"instrukcje do wypełnienia jeśli warunek spełniony"
} else {
"instrukcje do wypełnienia jeśli warunek nie jest spełniony"
}
warunki piszesz 2 jeden określający minimum a drugi maksimum i pomiędzy nimi wstawiasz && co oznacza logiczne "i"
ania1002
Użytkownik
Użytkownik
Posty: 81
Rejestracja: 6 sty 2011, o 13:11
Płeć: Kobieta
Lokalizacja: Krakow
Pomógł: 1 raz

[C] Problem z programem w c

Post autor: ania1002 »

Kod: Zaznacz cały

printf("Podaj wiek kazdej kobiety z przedzialu: 20-40 lat:
");
                     
                     for(i=0;i<n;i++){
                                      if(l[i]>=20 && l[i]<=40){
                                      scanf("%f",&l[i]);
                                      }
                                      }
Co tu jeszcze trzeba zmienic?
Ostatnio zmieniony 5 wrz 2011, o 16:52 przez Althorion, łącznie zmieniany 1 raz.
Powód: Poprawa wiadomości.
sonicwork
Użytkownik
Użytkownik
Posty: 67
Rejestracja: 3 wrz 2010, o 00:38
Płeć: Mężczyzna
Lokalizacja: Polska
Podziękował: 2 razy
Pomógł: 1 raz

[C] Problem z programem w c

Post autor: sonicwork »

to zależy co ci nie działa... ja nie wiem co ty chcesz robić tym programem
przede wszystkim widzę dziwne przypisanie wartości do adresu zmiennej

Kod: Zaznacz cały

scanf("%f",&l[i]);
to celowe czy mylisz wartość prawostronną z lewostronną?
ania1002
Użytkownik
Użytkownik
Posty: 81
Rejestracja: 6 sty 2011, o 13:11
Płeć: Kobieta
Lokalizacja: Krakow
Pomógł: 1 raz

[C] Problem z programem w c

Post autor: ania1002 »

Ten program ma za zadanie obliczac wydatki w zaleznosci od ilosci dzieci, lat kobiety i dochodow.
sonicwork
Użytkownik
Użytkownik
Posty: 67
Rejestracja: 3 wrz 2010, o 00:38
Płeć: Mężczyzna
Lokalizacja: Polska
Podziękował: 2 razy
Pomógł: 1 raz

[C] Problem z programem w c

Post autor: sonicwork »

no dobra ale wraz nie wiem co ci w nim nie działa
kod3r
Użytkownik
Użytkownik
Posty: 61
Rejestracja: 9 sty 2010, o 22:06
Płeć: Mężczyzna
Lokalizacja: Polska
Podziękował: 2 razy

[C] Problem z programem w c

Post autor: kod3r »

Pokaż cały kod to się zobaczy co jest nie tak, lub treści błędu jeśli takowe są.
zedd5
Użytkownik
Użytkownik
Posty: 17
Rejestracja: 12 mar 2008, o 00:51
Płeć: Mężczyzna
Lokalizacja: Polska
Podziękował: 3 razy
Pomógł: 1 raz

[C] Problem z programem w c

Post autor: zedd5 »

Nie wiem, czy dobrze, ale się kompiluje.
Nie używaj zmiennych (n) do określania rozmiarów tablic. Przydziel pamięć dynamicznie (malloc, free).
Na początek polecam bardziej DevCpp niż CodeBlocks.

Kod: Zaznacz cały

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

float wydatki(int dzieci, int lata, float dochod){
	return (-0.1*dzieci + 0.15*lata + 0.02*dochod);
}

int main(void) {
	int i,n;
	
	printf("Podaj ilosc badanych kobiet:\n");
	scanf("%d",&n);
	
	int *dzieci, *lata;
	float *dochod;

	dzieci = (int*) malloc (n * sizeof(int)); /* przydzielenie pamieci */
	lata = (int*) malloc (n * sizeof(int));
	dochod = (float*) malloc (n * sizeof(float));
	
	printf("Podaj ilosc dzieci dla kazdej kobiety:\n");
	for(i=0;i<n;i++){
		scanf("%d",&dzieci[i]);
	}
	
	printf("Podaj wiek kazdej kobiety w przedziale 20-40 lat\n");
	for(i=0;i<n;i++){
		scanf("%d",&lata[i]);
		if (lata[i] < 20 || lata[i] > 40) { /* jezeli kobieta ma mniej niz 20 lub wiecej niz 40 lat */
			printf("Podaj wiek kobiety z przedzialu od 20 do 40 lat.\n");
			i--; /* obniza 'i', aby wartosc wrowadzic jeszcze raz */
		}
	}
	
	printf("Podaj dochod kazdej kobiety w tys. zl:\n");
	for(i=0;i<n;i++){
		scanf("%f",&dochod[i]);
	}

	printf("\nNr kobiety, ilosc dzieci, wiek, dochody, wydatki:\n\n");
	for(i=0;i<n;i++){
		printf("Nr%d: Dzieci(%d), Wiek(%d), Dochod(%.2f), Wydatki(%.2f)\n", 
			i+1, dzieci[i],lata[i], dochod[i], wydatki(dzieci[i],lata[i],dochod[i]));
	} /* %.2f oznacza liczbe z ulamkiem, z 2 miejscami po przecinku */
	
	free(dzieci); /* zwolnienie pamieci */
	free(lata);
	free(dochod);
	
	system("pause");
	
	return 0;
}

Awatar użytkownika
Althorion
Użytkownik
Użytkownik
Posty: 4541
Rejestracja: 5 kwie 2009, o 18:54
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 9 razy
Pomógł: 662 razy

[C] Problem z programem w c

Post autor: Althorion »

Dev jest już od dłuższego czasu nie rozwijany, tak więc wybór właśnie tego środowiska nie będzie najlepszym, szczególnie jeśli chcemy programować zgodnie z najnowszym standardem C++0x.
sonicwork
Użytkownik
Użytkownik
Posty: 67
Rejestracja: 3 wrz 2010, o 00:38
Płeć: Mężczyzna
Lokalizacja: Polska
Podziękował: 2 razy
Pomógł: 1 raz

[C] Problem z programem w c

Post autor: sonicwork »

ten program jest w C...

na ćwiczeniach podczas studiów pod windows-em używa się właśnie dev


a tak przy okazji gdzie są ostatnie posty napisane przeze mnie i ania1002 ? znikły?


zedd5 twój program ma wadę bo nie mnoży wartości dochodu przez 1000 poza tym jest ok

ja z kolei z tymi "&" się pomyliłem, zbyt dawno nie pisałem programu w C
ODPOWIEDZ