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

Znak liczby (pierwsze funkcje)

Object Storage Arubacloud
0 głosów
510 wizyt
pytanie zadane 1 grudnia 2019 w C i C++ przez Hubertius Bywalec (2,970 p.)
edycja 1 grudnia 2019 przez Hubertius

Cześć

Akurat jestem w trakcie nauki i napotkałem pewien problem... wyskoczył wam może kiedyś komunikat w takim stylu?

control reaches end of non-void function

Jak coś daję jeszcze opis zadania, które robiłem. Może coś przegapiłem.

"

Napisz funkcję o prototypie

int sign(int value)

Ma ona zwracać wartość -1 w przypadku liczby ujemnej, 1 w przypadku dodatniej lub 0. Napisz program, który zapyta użytkownika o wprowadzenie liczby, a następnie wywoła funkcję sign, przekazując wprowadzoną liczbę jako argument i wyświetli komunikat negative, zero lub positive w zależności od wyniku tej funkcji. W przypadku wprowadzenia przez użytkownika błędnych danych program powinien wyświetlić komunikat Incorrect input i zakończyć działanie z kodem błędu 1.

Uwaga W programie nie wolno używać instrukcji if.

Przykładowe wejście:

Podaj liczbe: -15

Przykładowe wyjście:

negative

"

A tutaj jeszcze swój kod:

"

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

/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int sign(int value);

int main(int argc, char *argv[]) 
{
    int value;
    int kontrola;
    printf("Podaj liczbe:");
    kontrola=scanf("%d",&value);
    switch(kontrola)
    {
        case 0:
            printf("Incorrect input");
            return 1;
        case 1:
            switch(value)
            {
               case 0:
                    printf("zero");
               break;
               default:
                   switch(sign(value))
                   {
                       case 1:
                           printf("positive");
                       break;
                       case -1:
                           printf("negative");
                       break;                       
                }
            }
        
    }
    return 0;
}
int sign(int value)
{ 
    int A;
    A=value<0;
    switch(A)
    {
        case 1:
        return -1;
        case 0:
        return 1;
    }
    
}


"

Poradzicie?  :/

komentarz 2 grudnia 2019 przez niezalogowany
int sign(int value)
{  
  if( value<0) return -1;
  else if( value>0) return 1;
  else return 0;
}

raczej tak bym to widział. Da się zrobić na case ale po co?

komentarz 2 grudnia 2019 przez Hubertius Bywalec (2,970 p.)

No właśnie tak bym chciał, ale nie mogę:"Uwaga W programie nie wolno używać instrukcji if.".

:P

komentarz 2 grudnia 2019 przez niezalogowany
edycja 2 grudnia 2019
int sign(int value){ 
    swich((value>0)){
      
          case 1: return 1;
          default :
             swich(value){

              case 0: 
                   return 0;
              default :
                   return -1
         }
    }
}

to powinno być dobrze ale chyba to zadanie na bity

edit:: jeśli chodzi o samo słówko if to:

int sign(int value){ 
return (value<0)?-1 :(value>1); //się spieszyłem i nie przemyslałem
}

 

1 odpowiedź

0 głosów
odpowiedź 2 grudnia 2019 przez niezalogowany
   int value;
    printf("Podaj liczbe:");
    if (scanf("%d",&value))
    switch(sign(value))
    {
          case 0:
                    printf("zero");
               break;
          case 1:
                    printf("positive");
                 break;
          case -1:
                    printf("negative");
                 break;                             
    }
 else printf("Incorrect input");

i tak

komentarz 2 grudnia 2019 przez Hubertius Bywalec (2,970 p.)

Siema, dzięki za pomoc. Zmodyfikowałem main-a:

	int value;
	int kontrola;
	printf("Podaj liczbe:");
	kontrola=scanf("%d",&value);
	switch(kontrola)
	{
		case 0:
			printf("Incorrect input");
		    return 1;
		case 1:
			switch(sign(value))
			{
		      case -1:
			     printf("negative");
			  break;
			  case 0:
			  	 printf("zero");
			  break;
			  case 1:
			  	printf("positive");
			  break;
			  	
			}
	}
	return 0;		
}

I funkcję:

int sign(int value)
{ 

	switch(value<0)
	{
		case 1:
			return -1;
		default:
			switch(value)
			{
				case 0:
					return 0;
				default:
					return 1;
			}
	}
	
}

Zastanawiam się o co chodziło, że jednak wcześniej się czepiało z tym błędem. Notabene kod nie uległ wielkiej zmianie, wykonuje to samo co wykonywał wcześniej.  :/

komentarz 2 grudnia 2019 przez niezalogowany
edycja 2 grudnia 2019
to mi jakoś podejrzanie wygląda  A=value<0; nie wiem jak to jest z kolejnością operatorów

bool A=(value<0); to powinno zadziałać ale masz tylko 1 i -1 a zero nie uwzględnione dopiero w głównym kodzie.

Podobne pytania

0 głosów
0 odpowiedzi 1,010 wizyt
pytanie zadane 1 listopada 2019 w C i C++ przez Hubertius Bywalec (2,970 p.)
+1 głos
1 odpowiedź 535 wizyt
pytanie zadane 9 lutego 2022 w C i C++ przez Dynamic Bywalec (2,910 p.)
0 głosów
3 odpowiedzi 179 wizyt
pytanie zadane 13 grudnia 2019 w C i C++ przez amtrax Dyskutant (9,630 p.)

92,634 zapytań

141,505 odpowiedzi

319,883 komentarzy

62,015 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!

...