Problem z podstawami C 4248 6

O temacie

Autor Artex

Zaczęty 20.10.2008 roku

Wyświetleń 4248

Odpowiedzi 6

Artex

Artex

Użytkownicy
posty99
  • Użytkownicy
Nie wiem dlaczego nie ma działu traktującego o języku ANSI C, ale spróbuje się tym nie przejąć : P.

Jakiś czas temu zainteresowałem się programowaniem w języku C. Załatwiłem sobie kompilator (Turbo C) no i napisałem pierwszy program. Hello World:

#include<stdio.h>

main()
{
printf("Hello World\n");

return 0;
}

Ku mojej radości zadziałało, postanowiłem więc napisać program który wypisuje 10 razy "hello world":

#include<stdio.h>

main()

int i = 0

while (i <= 10)
{
printf("Hello World\n");

++i

return 0;
}

Niestety mój kompilator zgłasza "syntax error" i wskazuje albo na początek pętli ("while ...") albo na deklaracje zmiennej ("int i = 0").

OCB? Może mam kompilator niezgodny z ANSI? Jeśli tak to co możecie polecić?
 

Adanos

Adanos

Administrator
Szara eminencja
posty5204
Propsy3870
ProfesjaProgramista
  • Administrator
  • Szara eminencja
Po prostu robisz masę błędów składniowych. Tak to powinno wyglądać:
#include<stdio.h>

main()
{
int i=1;

while (i <= 10)
{
printf("Hello World\n");

++i;
}

system("pause");
}

Artex

Artex

Użytkownicy
posty99
  • Użytkownicy
Dzienks : ).

Tematu proszę nie zamykać, mozę znajdę jeszcze jakiś problem  :lol2:
 

Trout

Trout

Użytkownicy
posty50
Propsy1
  • Użytkownicy

Trout

Problem z podstawami C
#3 2008-10-30, 19:17(Ostatnia zmiana: 2008-10-30, 19:50)
//kalkulator xD
#include<string>
#include<iostream>
#include<conio.h>
void main ()
{
int nOpcja;
std::cout << "Wybierz dzialanie:" << std::endl;
std::cout << "1. Dodawanie" << std::endl;
std::cout << "2. Odejmowanie" << std::endl;
std::cout << "3. Mnozenie" << std::endl;
std::cout << "4. Dzielenie" << std::endl;
std::cout << "0. Wyjscie" << std::endl;
std::cout << "Twoj wybor: ";
std::cin >> nOpcja;
float fLiczba1;
float fLiczba2;
std::cout<<"Podaj liczbe pierwsza"<<std::endl;
std::cin>> fLiczba1;
std::cout<<"Podaj liczbe druga"<<std::endl;
std::cin>> fLiczba2;
switch (nOpcja)
{
case 1: std::cout << fLiczba1 << " + " << fLiczba2 << " = "<< fLiczba1 + fLiczba2;  
break;
case 2: std::cout << fLiczba1 << " - " << fLiczba2 << " = "<< fLiczba1 - fLiczba2; break;
case 3: std::cout << fLiczba1 << " * " << fLiczba2 << " = "
<< fLiczba1 * fLiczba2; break;
case 4:
if (fLiczba2 == 0.0)
std::cout << "Dzielnik nie moze byc zerem!";
else
std::cout << fLiczba1 << " / " << fLiczba2 << " = "<< fLiczba1 / fLiczba2;
break;
case 0: std::cout << "Dziekujemy :)"; break;
default: std::cout << "Nieznana opcja!";
}
getch();
}

Ogólnie kalkulator działa dobrze , ale po naciśnięciu 0 chce , żeby program wyłączył się , ale tego nie robu . Czy ktoś mógłby mi napisać co zrobić , aby wyjście z programu po naciśnięciu 0 działało ?
EDIT:I jeszcze jedno pytanie . Jak funkcja odpowiadaza natychmiastowe zamknięcie programu ?
PS:Jak zrobić ,aby w "Twój wybór" można było wpisać tylko cyfry od 1 do 4 ?
 

Vuler

Vuler

Użytkownicy
posty60
Propsy16
Profesjabrak
  • Użytkownicy
Można to zrobić np tak
...
if (nOpcja != 0)
{
std::cout<<"Podaj liczbe pierwsza"<<std::endl;
std::cin>> fLiczba1;
std::cout<<"Podaj liczbe druga"<<std::endl;
std::cin>> fLiczba2;
}
...

Funkcja natychmiast zamykająca program
void exit(int status);
 

Trout

Trout

Użytkownicy
posty50
Propsy1
  • Użytkownicy
Dzięki.Ale teraz mam kolejny problem.// Random - losowanie liczby
#include <iostream>
#include <ctime>
#include <conio.h>
#include<string>
int nS=0;
int nS2=0;
int nWylosowana;
int nWyrosowana;
void kostka()
{
srand (static_cast<unsigned int>(time(NULL)));
nWylosowana = rand() % 6+ 1;
srand (static_cast<unsigned int>(time(NULL)));
nWyrosowana = rand() % 5+ 1;  
for (int i=1;i<=5;i++)  
{
std::cout << "Wylosowana liczba to " << nWylosowana << std::endl;  
std::cout<<nWyrosowana<<std::endl;
if (nWylosowana>nWyrosowana)
nS=nS++;
else
nS2=nS2++;
}
if (nWylosowana>nWyrosowana)
std::cout<<"Brawo!Wygrales!Otrzymujesz 100 orenow. "<<std::endl;
if (nWylosowana<nWyrosowana)
std::cout<<"Niestety przegrales 100 orenow. "<<std::endl;
if (nWylosowana==nWyrosowana)
std::cout<<"Sytuacja pasowa xD ";
std::cout <<"Wygrales"<<nS<<" razy "<<std::endl;
std::cout<<"Przegrales "<<nS2<<" razy "<<std::endl;
if(nS>nS2)
std::cout<<"Ogolnie rzecz biorac wygrales xD"<<std::endl;
if(nS<nS2)
std::cout<<"Ogolnie rzecz biorac przegrales"<<std::endl;
getch();
}
void main()
{
std::string strWybor;
kostka();
}

I prawie wszystko jest dobrze , ale jak mam zrobić aby każda w 5 prób była losowana osobno , a nie , że wszystjie 5 są takie same?
 

MRGreg

MRGreg

Użytkownicy
posty32
  • Użytkownicy
Musisz na końcu pętli for wstawić ten generator liczb losowych bo zrobiłeś plętle która 5 razy wywołuje Ci tą jedną zmienna którą tak jakby raz "losowałeś"
Wstaw to na koniec fora i powinno być ok
[codebox]
nWyrosowana = rand() % 5+ 1;
nWylosowana = rand() % 6+ 1;
[/codebox]

Swoją drogą na początku programu po wrzuceniu bibliotek możesz korzystać z przestrzeni nazw
[codebox]
using namespace std;
[/codebox]
dzięki czemu nie będziesz musiał przed każdą funkcją pisać
[codebox]
std::
[/codebox]
 


0 użytkowników i 1 Gość przegląda ten wątek.
0 użytkowników
Do góry