Programowanie w C, początki

0

Na studiach dopiero zaczynam naukę programowania. Wcześniej, ani w gimnazjum, ani w liceum programowania nie miałem i mam problem z takim bardzo prostym zadaniem. Wiem, że zadanie jest proste ale nie chce mi coś wyjść a na innych forach naprowadzają mnie bardzo ogólnikowo. Zadanie brzmi:
Zakładajac, ze od poczatku naszej ery obowiazywał kalendarz gregorianski
(co, prawde mówiac, nie jest prawda), napisz funkcje, która wylicza ile
dni mineło od poczatku ery, do podanej daty. Napisz program, który obliczy ile
dni mineło od daty Twoich urodzin do dnia dzisiejszego. Przelicz to na sekundy.

Najmilej widziany cały napisany program i wyjaśnienie co do czego. Z góry dziękuje.

0

Masz problem z matematycznym zapisem funkcji czy jej zapisem w C ?

0
BK napisał(a)

Masz problem z matematycznym zapisem funkcji czy jej zapisem w C ?

Zapisem w C

0

To pokaż co juz masz, np. wyprowadzony matematyczny wzór i pomozemy za darmo. Jeśli chcesz zeby ktoś od początku do końca to za ciebie napisał to zapomnij, albo płać.

0

No w sumie funkcję matematyczną też zbytnio nie wiem jak napisać. Jedynie co spróbowałem zrobić to coś takiego:

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
    float d,r;
    int i,ii;
    int miesiac[12]={31,28,31,30,31,30,31,31,30,31,30,31};
    r=r++;

    printf("Proszę wpisać rok:");
    scanf("%f", &r);
    printf("Proszę wpisać miesiac:");
    scanf("%f", &miesiac);
    printf("Proszę podać dzień:");
    scanf("%f",&d);
    for(i=0;i<r;i++)
    {
        if((i%4==0)&&!(i%100==0)||(i%400==0))
        {
            miesiac[1]+=1;
            for(ii=0;ii<12;ii++)
            {
                d=d+miesiac[ii];
                d=d+1;
            }
        }
        else
        {
            for(ii=0;ii<12;ii++)
            {
                d=d+miesiac[ii];
            }
        }
    }
    printf("Wynik w dniach: %f",d);
}

Ale niestety nie działa... Kompiluje mi się, ale po wpisaniu wszystkich danych po prostu consola się wyłącza. Nie wiem jeszcze do końca jak mogę korzystać z tablic. Może jest jakiś sposób rozwiązania bez tablic?

0

Nie analizowałem kodu, ale na pierwszy rzut brakuje return

#include<iostream> //gdy korzystasz z system("pause")
...
int main()
{
  ...
  system("pause"); //opcjonalnie
  return 0;
}

natomiast

a=a+b //mozna a+=b
a=a+1 //mozna a++

%f odnosi się do liczb zmiennoprzecinkowych, a dzien, miesiac i rok sa naturalnymi liczbami, więc użyj %d (i typ zmiennych int)

0
vecco napisał(a)

#include<iostream> //gdy korzystasz z system("pause")

[rotfl] [rotfl] [rotfl]

System pochodzi z cstdlib.

Niejawne włączanie jednego nagłówka biblioteki standardowej przez drugi to cecha konkretnej implementacji, coś czego wykorzystywać po prostu nie wolno.

0

Ekhm, przepraszam, nie doczytałem... Vecco, wątek dotyczy C, gdzie Ty streamy z C++ wpychasz?

0

Wypociłem coś takiego

#include<stdio.h>
#include<stdlib.h>
#define DNIE 365
int main()
{

int d,m,r;
int LUTY;
int rok;
int suma=0;
int i, dni=0;
int x; //zmienna mająca za zadanie wyłonić dni przestępne
x=((r-1)/4);
printf("Prosze podac rok:");
scanf("%d",&r);
printf("Prosze podac miesiac:");
scanf("%d",&m);
printf("Prosze podac dzien:");
scanf("%d",&d);
rok=(((r-1)*DNIE)+((r-1)/4));
int miesiace[12]={31,28,31,30,31,30,31,31,30,31,30,31};
m=m-1;
if((r%4==0)&&!(r%100==0)||(r%400==0))
miesiace[1]+=1;

for(i=0,i<12,i++)
suma=suma+miesiace[i];


printf("Wynik w dniach: %d\n",rok+suma+d);

system("PAUSE");
return 0;

}

Ale wyskakuje mi błąd w linijce 26 tam gdzie zrobiłem pętle "syntax error before ')' token". W czym może tkwić problem?

0

for(i=0,i<12,i++)
o_O
for w składni ma średniki ;)

0
Shalom napisał(a)

for(i=0,i<12,i++)
o_O
for w składni ma średniki ;)

ehh.. głupota nie boli;] Dzięki już cyba program mi działa. Muszę tylko okiełznać:P

0

Coś jednak nie działa mi z tablicami... W ogóle nie uwzględnia miesięcy.

0

Przepraszam, że nie edytuje, ale co zrobiłem źle w powyższym kodzie, że nie liczy mi miesięcy?

0

pokaz jeszcze raz kod
Strzelam, że napisałeś

 for(i=0;i<12;i++) ;
    suma=suma+miesiace[i];

// nie można dodawać pogrubienia pomiędzy znacznikami cpp ?

0

Dobra, skorzystam z tematu i się podepnę. Też zaczynam naukę c i mam problem oto z takim banalnym programem:

#include <stdio.h>
main()
{
     double nc;
     int c;
     c = getchar();
     while(c != EOF)
     {
     ++nc;
     c = getchar();
     }
     printf("%.0f\n", nc);
     system("pause");
}

Nie wiem dlaczego pętla cały czas się wykonuje i nie chcę się zakończyć. To samo mam nawet z przykładami z książki, które powinny działać, a niestety skutek jest ciągle taki sam. Czy użyje pętli for, czy while, cały czas one się wykonują i mogę wpisywać słowa, ale pętla nie chce się zakończyć, a program przejść do instrukcji printf().

0

A podajesz na koniec wejścia znak eof() ? Wątpię, dlatego program się pętli.
Po wpisaniu danych stuknij enter, potem ctrl+z i znów enter, powinno zadziałać (o ile to windows)

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