Język C

DBoniem
Użytkownik
Użytkownik
Posty: 312
Rejestracja: 25 lis 2010, o 13:47
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 1 raz
Pomógł: 1 raz

Język C

Post autor: DBoniem »

gdzie tu jest b?
wawek91
Użytkownik
Użytkownik
Posty: 795
Rejestracja: 2 cze 2010, o 08:56
Płeć: Mężczyzna
Lokalizacja: Tarnów
Podziękował: 14 razy
Pomógł: 66 razy

Język C

Post autor: wawek91 »

Odniosłem się do programu powyższego tj. gdzie masz liczyć sumę, różnicę, iloczyn i iloraz.
DBoniem
Użytkownik
Użytkownik
Posty: 312
Rejestracja: 25 lis 2010, o 13:47
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 1 raz
Pomógł: 1 raz

Język C

Post autor: DBoniem »

Program, który wyznacza wartość bezwzględną liczby typu double

Kod: Zaznacz cały

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

main()
{
    double x;
    
    
    printf("podaj liczbe   
",&x);
    scanf("%f",&x);
    
    if(x>=0)
    return x;

    else
    return -x;
    system("PAUSE");
    
}
Tyle, że coś tu nie gra, może ktoś znaleźć błąd?
Awatar użytkownika
miki999
Użytkownik
Użytkownik
Posty: 8691
Rejestracja: 28 lis 2007, o 18:10
Płeć: Mężczyzna
Lokalizacja: Gdańsk
Podziękował: 36 razy
Pomógł: 1001 razy

Język C

Post autor: miki999 »

Kod: Zaznacz cały

    return -x;
Co to jest? To nie może zadziałać.

Po co dołączasz biblioteki, których nie używasz?

Kod: Zaznacz cały

    printf("podaj liczbe   
",&x);
Co tu robi ",&x"?
DBoniem
Użytkownik
Użytkownik
Posty: 312
Rejestracja: 25 lis 2010, o 13:47
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 1 raz
Pomógł: 1 raz

Język C

Post autor: DBoniem »

czyli jak prawidłowo powinien wyglądać kod?
Awatar użytkownika
miki999
Użytkownik
Użytkownik
Posty: 8691
Rejestracja: 28 lis 2007, o 18:10
Płeć: Mężczyzna
Lokalizacja: Gdańsk
Podziękował: 36 razy
Pomógł: 1001 razy

Język C

Post autor: miki999 »

Chyba trzeba zmienić tryb pracy.

Napisz kolejno, co ma robić program (deklaracja zmiennych, komunikaty, operacje, pętle, pobieranie zmiennych itp.).
DBoniem
Użytkownik
Użytkownik
Posty: 312
Rejestracja: 25 lis 2010, o 13:47
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 1 raz
Pomógł: 1 raz

Język C

Post autor: DBoniem »

Kod: Zaznacz cały

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

main()
 {
    double x;                  /* typ danych double treść zadania */
   
   
    printf("podaj liczbe   
",x);  /* ma to za zadanie wpisanie liczby */
    scanf("%f",&x);                 /* pobiera od użytkownika liczbę jaką on wybierze */
    
    if(x>=0)                           /* jeśli x jest większe równe 0 */
    return x;                          /* wtedy zwróć x, czyli  po prostu jeśli x dodatni to nie zmienia jego wartości*/

    else                            /*jeśli nie to...*/
    return (-x);                    /*gdy x ujemny zwróć liczbę przeciwną, czyli dodatnią*/
    system("PAUSE");                /* zatrzymaj do wcisniecia klawisza przez uzytkownika */
   
}

Kompiluje się normalnie, lecz gdy wpisze jakąkolwiek liczbę to natychmiast potem program się zamyka, gdzie muszę włożyć system("PAUSE"); by zatrzymać program?
Awatar użytkownika
miki999
Użytkownik
Użytkownik
Posty: 8691
Rejestracja: 28 lis 2007, o 18:10
Płeć: Mężczyzna
Lokalizacja: Gdańsk
Podziękował: 36 razy
Pomógł: 1001 razy

Język C

Post autor: miki999 »

No i tutaj komendy się kłaniają:

Kod: Zaznacz cały

printf("podaj liczbe   
",x);  /* ma to za zadanie wpisanie liczby */
printf służy do wypisania komunikatu.

Kod: Zaznacz cały

scanf("%f",&x);                 /* pobiera od użytkownika liczbę jaką on wybierze */
tutaj ok

Kod: Zaznacz cały

  if(x>=0)                           /* jeśli x jest większe równe 0 */
ok

Kod: Zaznacz cały

return x;                          /* wtedy zwróć x, czyli  po prostu jeśli x dodatni to nie 
komenda "return" zakańcza w tym przypadku program. To że się wpisuje na ogół "return 0;" oznacza tyle co "wszystko jest ok, kończ program". Masz wyświetlić liczbę na ekranie. Jakiego polecenia użyjesz?

Kod: Zaznacz cały

   else                            /*jeśli nie to...*/
ok

i na końcu przed ostatnią klamrą stawiasz "return 0;".
DBoniem
Użytkownik
Użytkownik
Posty: 312
Rejestracja: 25 lis 2010, o 13:47
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 1 raz
Pomógł: 1 raz

Język C

Post autor: DBoniem »

Masz wyświetlić liczbę na ekranie. Jakiego polecenia użyjesz?
Czyżby chodziło o polecenie puts?
Awatar użytkownika
miki999
Użytkownik
Użytkownik
Posty: 8691
Rejestracja: 28 lis 2007, o 18:10
Płeć: Mężczyzna
Lokalizacja: Gdańsk
Podziękował: 36 razy
Pomógł: 1001 razy

Język C

Post autor: miki999 »

printf- tego samego, który wyświetlał komunikat o podaniu liczby. Teraz wyświetla jaka to liczba.
DBoniem
Użytkownik
Użytkownik
Posty: 312
Rejestracja: 25 lis 2010, o 13:47
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 1 raz
Pomógł: 1 raz

Język C

Post autor: DBoniem »

jak dla danej liczby C wyznaczyć możemy najmniejszą˛ liczbę˛ naturalną n, taką, że

\(\displaystyle{ 1^{2}+ 2^{2}+...+ n^{2} \ge C}\)

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

mian()
{
int n=0,suma=0;
while (suma<C)

n=n+1
suma = suma + n*n ;
return 0;
}
Co tutaj źle wpisałem?
wawek91
Użytkownik
Użytkownik
Posty: 795
Rejestracja: 2 cze 2010, o 08:56
Płeć: Mężczyzna
Lokalizacja: Tarnów
Podziękował: 14 razy
Pomógł: 66 razy

Język C

Post autor: wawek91 »

Po pierwsze wogóle nie zadeklarowałeś zmiennej C.
DBoniem
Użytkownik
Użytkownik
Posty: 312
Rejestracja: 25 lis 2010, o 13:47
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 1 raz
Pomógł: 1 raz

Język C

Post autor: DBoniem »

a teraz?

Kod: Zaznacz cały

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

main()
{
int n=0,c,suma=0;
while (suma<c)

n=n+1
suma = suma + n*n ;
return 0;
}
         
wawek91
Użytkownik
Użytkownik
Posty: 795
Rejestracja: 2 cze 2010, o 08:56
Płeć: Mężczyzna
Lokalizacja: Tarnów
Podziękował: 14 razy
Pomógł: 66 razy

Język C

Post autor: wawek91 »

No dobra ale ile to c jest rowne? Przeciez skoro nie przypisales tam jakiejs wartosci to sa tam jakies śmieci. Druga sprawa co niby Twoja pętla while ma robic? Nie ma po niej żadnego bloku instrukcji wiec wykona sie pierwsza instrukcja jaka po warunku występuje a chyba nie taki był Twoj zamiar. Zrób to na spokojnie a nie huzia na józia na szybko i niech nie dziala a na forum mi napiszą gotowca.
DBoniem
Użytkownik
Użytkownik
Posty: 312
Rejestracja: 25 lis 2010, o 13:47
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 1 raz
Pomógł: 1 raz

Język C

Post autor: DBoniem »

Teraz powinno być już dobrze

Kod: Zaznacz cały

#include <stdio.h> /* podstawowa konieczna biblioteka*/
#include <stdlib.h> /* korzystamy z tej biblioteki, gdy bierzemy system pause*/
#include<math.h>    /* biblioteka zawierająca funkcje matematyczne */
#define C 10         /* stała C równa 10 */



int main()
{
    int n=0;         /*liczba calkowita n=0*/
    double suma=0;     /*suma podwojnej dokladnosci rowna 0*/
    while(suma < C)       /* gdy suma mniejsza od C*/
    {
    n=n+1;               /*weź kolejną liczbę całkowitą n*/
    suma=suma+1.0/n;           /*oblicz sumę*/
    }
    
    printf("Dla  n=%d suma czesciowa szeregu harmonicz wieksza niz %d
", n,C);   /*printf powoduje pokazanie napisu na ekranie po kompilacji*/
    
    system("PAUSE");  /*wstrzymanie programu*/
    return 0;              /*oddaj 0  czyli program poprawny*/
}
czyli odpowiedź n=12367
Czy już dobrze to zdefiniowałem?-- 6 gru 2010, o 22:14 --Jeśli ten program jest poprawny w C++ to co trzeba w nim zmienić żeby działał w C?

Kod: Zaznacz cały

#include <stdio.h>
#include <stdlib.h>
#include<math.h>
#define ROZMIAR 5


int main()
{
    int i; 
    float su=0;
    float srednia;
    float tab[ROZMIAR]={10,4,6,20,10};
    for (i=0;i<ROZMIAR;i++)
    {
       su=su+ tab[i];
       }
       srednia=su/ROZMIAR;
    printf("srednia podanych liczb rowna sie %f 
", srednia);  
    system("PAUSE");
    return 0;
}
ODPOWIEDZ