• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

błąd na początku

VPS Starter Arubacloud
0 głosów
424 wizyt
pytanie zadane 25 kwietnia 2018 w C i C++ przez Świezak Nowicjusz (150 p.)

Hej Jestem nowy w c++ i zbytnio nie wiem co tu może być żle 

zadaniem programu jest pomnozenie 4 cyfr a potem odejmowanie lecż u mnie wychodzi błąd

[Error] expected initializer before 'float'  i   [Error] expected unqualified-id before '{' token

szukałem trochę po internecie ale zbytnio mi to nie pomogło bo nie mam pojęcia co robie zle oto kod :

#include<iostream>
#include<cstdlib>
#include<conio.h>
using namespace std ;
int main ()

float a,b,c,d;
float e,f,g,h;
{

	cout<<"podaj cztery cyfry potem je pomnoz a na koncu odejmii"<<endl;
		
	cout<<"podaj a:"<<endl;
	cin>>a;
	cout<<"podaj b:"<<endl;
	cin>>b;
	cout<<"podaj c:"<<endl;
	cin>>c;
	cout<<"podaj d:"<<endl;
	cin>>d;
	cout<<"podaj e:"<<endl;
	cin>>e;
	cout<<"podaj f:"<<endl;
	cin>>f;
	cout<<"podaj g:"<<endl;
	cin>>g;
	cout<<"podaj h:"<<endl;
	cin>>h;
{
if(a*d-b*c)>=0;
cout<<"wykonujesz zadanie poprawnie"<<endl;
{
	if(a*b-b*c)<=0;
cout<<"wykonujesz zadanie niepoprawnie"<<endl;
}
if(e*h-f*h)>=0;
cout<<"wykonujesz zadanie dobrze"<<endl;
}
if(e*h-f*h)<=0;
cout<<"wykonujesz zadanie zle">>endl;

return 0;
}

 

2 odpowiedzi

0 głosów
odpowiedź 25 kwietnia 2018 przez Beginer Pasjonat (22,110 p.)
wybrane 25 kwietnia 2018 przez Świezak
 
Najlepsza

Kolega wyjaśnił przyczyny błędu. Ja zdjąłem kilka bibliotek u góry, spróbuj może tyle wystarczy. Nie pisz tak zwięźle kodu w poziomie, bo nieładnie wygląda i trudniej się czyta (wstawiaj spacje). Przy if-ach klamry sześcienne były zbędne, ponieważ każdy z nich zawiera tylko pojedynczą instrukcję. Poprawiony kod poniżej.


#include<iostream>
using namespace std;

int main()
{
float a, b, c, d;
float e, f, g, h;  
    
    cout << "podaj cztery cyfry potem je pomnoz a na koncu odejmii" << endl;
         
    cout << "podaj a:" << endl;
    cin >> a;
    cout << "podaj b:" << endl;
    cin >> b;
    cout << "podaj c:" << endl;
    cin >> c;
    cout << "podaj d:" << endl;
    cin >> d;
    cout << "podaj e:" << endl;
    cin >> e;
    cout << "podaj f:" << endl;
    cin >> f;
    cout << "podaj g:" << endl;
    cin >> g;
    cout << "podaj h:" << endl;
    cin >> h;

if(a * d - b * c >= 0)
cout << "wykonujesz zadanie poprawnie" << endl;
if(a * b - b * c <= 0)
cout << "wykonujesz zadanie niepoprawnie" << endl;
if(e * h - f * h >= 0)
cout << "wykonujesz zadanie dobrze" << endl;
if(e * h - f * h <= 0)
cout << "wykonujesz zadanie zle" >> endl;
 
return 0;
}

 

komentarz 25 kwietnia 2018 przez Świezak Nowicjusz (150 p.)
Dziekuję bardzo za wkład w poprawę błędów w programie

początki w programowaniu są u mnie trudne sam nie widzę błędów jakie popełniam

DZIEKUJE jeszcze raz :)
komentarz 25 kwietnia 2018 przez Beginer Pasjonat (22,110 p.)
To każdy tak ma na początku.
komentarz 25 kwietnia 2018 przez mokrowski Mędrzec (155,460 p.)
edycja 25 kwietnia 2018 przez mokrowski

@Beginer, Reguły utrzymania większych aplikacji mówią wyraźnie:

Przy if-ach klamry sześcienne były zbędne, ponieważ każdy z nich zawiera tylko pojedynczą instrukcję. 

To jest szkodliwe. Wstawiaj nawet dla 1 instrukcji klamry. Inni (czy ty sam) dodając nowe instrukcje, nie zauważą że to tylko jedna linia. 

https://medium.com/@jonathanabrams/single-line-if-statements-2565c62ff492

https://google.github.io/styleguide/cppguide.html#Conditionals

https://wiki.sei.cmu.edu/confluence/display/c/EXP19-C.+Use+braces+for+the+body+of+an+if%2C+for%2C+or+while+statement

komentarz 25 kwietnia 2018 przez Beginer Pasjonat (22,110 p.)
Usunięte klamry były asumptem do powyższego wykładu. Teraz autor zadania ma pełny przegląd zachowań w podobnych sytuacjach, pełną wiedzę.
komentarz 25 kwietnia 2018 przez mokrowski Mędrzec (155,460 p.)

@Beginer, W swoim kodzie masz jeszcze kilka "asumptów do pełnego przeglądu zachowań" i "uzyskania pełnej wiedzy".

komentarz 25 kwietnia 2018 przez Beginer Pasjonat (22,110 p.)
A to miało być spokojne popołudnie i wieczór.

Już kiedyś napisałem, że tworzysz informatyczne piekiełko. Masz duszę księgowej albo prawnika.
komentarz 25 kwietnia 2018 przez mokrowski Mędrzec (155,460 p.)

@Beginer, reagujesz na uwagi i dużą ilość informacji oraz linków z których możesz się wiele dowiedzieć i których (co wnoszę z odpowiedzi) nie przeczytałeś, w stylu "przytul mnie" i "daj mi się wysmarkać". Jeśli chcesz komuś poradzić to pochyl się nad tematem a nie serwujesz "tani kołczing" (błąd zamierzony) "jest dobrze, ładnie formatowany kod".

Pominę pytanie o logikę kodu w stosunku do tytułu zapytania. Zapewne polecenie brzmiało: "wprowadź liczbę 4-cyfrową i sprawdź zależności pomiędzy cyframi". O to jednak należy zapytać autora wątku.

Skupiając się wyłącznie na kodzie, myślę że to już jest (nieco) lepsze choć daleko do ideału:

(biorę pod uwagę początek nauki pytającego)

#include<iostream>

// Lepiej kształcić nawyk nie używania takiej deklaracji
//using namespace std;

int main()
{
    // Co do zasady, lepiej deklarować 1 zmienną 2 w linii.
    // W Twoim programie zapewne docelowo nie będzie tylu zmiennych.
    float a, b, c, d;
    float e, f, g, h;

    // Jakie cztery jeśli osiem? I nie cyfry a liczby?
    std::cout << "podaj osiem liczb potem je pomnoz a na koncu odejmii\n";
    
    // Tu powinna być pętla, ale nie wiem jakie zagadnienia są znane pytającemu
    std::cout << "podaj a:\n";
    std::cin >> a;
    std::cout << "podaj b:\n";
    std::cin >> b;
    std::cout << "podaj c:\n";
    std::cin >> c;
    std::cout << "podaj d:\n";
    std::cin >> d;
    std::cout << "podaj e:\n";
    std::cin >> e;
    std::cout << "podaj f:\n";
    std::cin >> f;
    std::cout << "podaj g:\n";
    std::cin >> g;
    std::cout << "podaj h:\n";
    std::cin >> h;

    // Przecież ma pojawić się 1 komunikat?
    // W dodatku komunikat w każdym przypadku ma taki sam
    // początek
    std::cout << "wykonujesz zadanie ";
    if((a * d - b * c) >= 0) {
        std::cout << "poprawnie\n";
    } else if((a * b - b * c) <= 0) {
        std::cout << "niepoprawnie\n";
    } else if((e * h - f * h) >= 0) {
        std::cout << "dobrze\n";
    } else if((e * h - f * h) <= 0) {
        std::cout << "zle\n";
    }
}

Proszę zapoznaj się z odnośnikami które podałem... 

komentarz 25 kwietnia 2018 przez Beginer Pasjonat (22,110 p.)
Przecież ja nie neguję uwag, i doceniam Twoje starania nazywając je nawet "wykładem". Korzystają z nich wszyscy ale przede wszystkim autor wątku, który ma teraz pełny przegląd rozwiązań, a przy okazji elastyczności języka C++.

Klamry przy if-ach usunąłem celowo i świadomie, żeby autor widział, że może ich nie być (w tym konkretnym przypadku).

Użycie samych if-ów (bez konstrukcji else if) nie jest żadnym błędem. Konstrukcja z else if jest niezbędna w przypadku użycia dodatkowo warunku else (którego tutaj nie było).

Zawsze używam using namespace std, ponieważ opcja - bez, zaciemnia czytelność kodu.
+1 głos
odpowiedź 25 kwietnia 2018 przez Aisekai Nałogowiec (42,190 p.)
1. "Rozerwales" funkcje main, wprowadzając coś między nagłówek a ciało funkcji. Polecam wrzucić zmienne do funkcji main.

2. Nie można takich ifow tworzyć, tzn całe wyrażenie logiczne które chcesz sprawdzić musi być w "()". Na dodatek, usuń średniśrednik zaraz po ifie.

3. Nawiasy klamrowe wewnątrz main są zle napisane, tzn (na przykładzie ifa, przepraszam że bez wstawienia tego jako kod ale na telefonie jestem):

if(wyrażenie_logiczne){

//kod

}

To czy napiszesz klamre w linii z ifem, czy pod znaczenia nie robi. Jeżeli instrukcja po ifie ma tylko jedną linijke, klamry możesz pominąć.
komentarz 25 kwietnia 2018 przez Świezak Nowicjusz (150 p.)
Dziękuje za opowiedz  :)

Podobne pytania

0 głosów
1 odpowiedź 516 wizyt
+1 głos
1 odpowiedź 129 wizyt
0 głosów
1 odpowiedź 551 wizyt
pytanie zadane 20 stycznia 2021 w C i C++ przez Adamek185wp Obywatel (1,280 p.)

92,453 zapytań

141,262 odpowiedzi

319,087 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...