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

Pierwszy program w C / Program przestał działać

Object Storage Arubacloud
0 głosów
403 wizyt
pytanie zadane 25 października 2017 w C i C++ przez cylo24 Początkujący (300 p.)

Witam jest to mój pierwszy post proszę o pomoc.

Napisałem pierwszy program samodzielnie co by potrenować pętle i przy kompilacji jest ok ale jak uruchamiam program to wyskakuje kom *. program przestał działać HELP

#include <stdio.h>
#include <math.h>
main ()
{
	enum dzialania { SUM=1, ROZ, ILOR, ILOCZ};
	
int n;
int a;
int b;
int suma = a+b;
int roznica = a-b;
int mnozenie = a*b;
float dzielenie =a/b;
printf("wprowadz a\n");
scanf ("%d", &a);
printf("wprowadz b\n");
scanf ("%d", &b);
printf("wybierz rodzaj działania\n");
printf("1 - dodawanie\n",suma);
printf("2 - odejmowanie\n",roznica);
printf("3 - mnozenie\n",mnozenie);
printf("4- dzielenie\n",dzielenie);
scanf ("%d", &n);
switch (n)
{
	case SUM: printf("Wynik dodawania %d",suma) ;
	break;
	case ROZ: printf("Wynik odejmowania %d",roznica) ;
	break;
	case ILOR: if(a==0)
	{
	printf("wynik mnożenia przez zero jest zawsze 0\n");
}
 else
	{ 
	if (b!=0)
	printf("wynik mnozenia %d",mnozenie);
	else
	printf("nie mozna mnozyc\n");
}
	break;
	case ILOCZ: 	if(a==0)
	{
	printf("nie dziel przez zero\n");
}
 else
	{ 
	if (b!=0)
	printf("wynik dzielenia %.1f",dzielenie);
	else
	printf("nie mozna dzielic\n");
}
	break; 	
}
getchar();
  return 0;

}

 

2 odpowiedzi

+1 głos
odpowiedź 25 października 2017 przez Bondrusiek Maniak (61,370 p.)
wybrane 25 października 2017
 
Najlepsza

Witam,

przełóż zmienne

int suma = a+b;
int roznica = a-b;
int mnozenie = a*b;
float dzielenie =a/b;

Zauważ, że zmienne a i b są niezdefiniowane(mają losowe wartości). Dopiero niżej podajesz im wartości przez scanf(). Usuń jeszcze z printf() zmiennej gdyż nie odwołujesz się do wartości tych zmiennych.

#include <stdio.h>
#include <math.h>
main ()
{
    enum dzialania { SUM=1, ROZ, ILOR, ILOCZ};

int n;
int a;
int b;

printf("wprowadz a\n");
scanf ("%d", &a);
printf("wprowadz b\n");
scanf ("%d", &b);
printf("wybierz rodzaj działania\n");
printf("1 - dodawanie\n");
printf("2 - odejmowanie\n");
printf("3 - mnozenie\n");
printf("4- dzielenie\n");
scanf ("%d", &n);
int suma = a+b;
int roznica = a-b;
int mnozenie = a*b;
float dzielenie =a/b;
switch (n)
{
    case SUM: printf("Wynik dodawania %d",suma) ;
    break;
    case ROZ: printf("Wynik odejmowania %d",roznica) ;
    break;
    case ILOR: if(a==0)
    {
    printf("wynik mnożenia przez zero jest zawsze 0\n");
}
 else
    {
    if (b!=0)
    printf("wynik mnozenia %d",mnozenie);
    else
    printf("nie mozna mnozyc\n");
}
    break;
    case ILOCZ:     if(a==0)
    {
    printf("nie dziel przez zero\n");
}
 else
    {
    if (b!=0)
    printf("wynik dzielenia %.1f",dzielenie);
    else
    printf("nie mozna dzielic\n");
}
    break;
}
getchar();
  return 0;

}

 

komentarz 25 października 2017 przez niezalogowany
O właśnie, nie zauważyłem tego string format, tutaj może lecieć crash.

Btw wartości nie są losowe, tylko śmieciowe. Słowo "losowe" sugeruje ze wartość jest losowania przy jej tworzeniu, podczas gdy to śmieć, który został na stosie. Można nawet przewidzieć wartość śmiecia w obrębie jednego programu
komentarz 25 października 2017 przez Bondrusiek Maniak (61,370 p.)
Semantycznie masz racje. Losowe wartości to bardziej te zwrócone przez funkcje rand(). Można użyć słowo śmieciowe bądź niezidentyfikowane zależy od gustu.
komentarz 25 października 2017 przez cylo24 Początkujący (300 p.)
Pomogło przełożenie zmiennych oraz usuniecie działań w pritf
0 głosów
odpowiedź 25 października 2017 przez niezalogowany
Pracujesz na śmieciowych danych, tzn najpierw tworzysz zmienne i liczysz jakieś śmieci, a dopiero później przypisujesz im prawidłowe wartości.

Kod jest niepoprawny, tj nie masz gwarancji ze np przy starcie w b nie ma zera, co przy dzieleniu powoduje crash

Podobne pytania

+1 głos
1 odpowiedź 489 wizyt
pytanie zadane 5 października 2021 w C i C++ przez Hpst Nowicjusz (130 p.)
0 głosów
1 odpowiedź 194 wizyt
0 głosów
1 odpowiedź 277 wizyt

92,555 zapytań

141,403 odpowiedzi

319,557 komentarzy

61,940 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...