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

Znak liczby (pierwsze funkcje)

VPS Starter Arubacloud
0 głosów
443 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 947 wizyt
pytanie zadane 1 listopada 2019 w C i C++ przez Hubertius Bywalec (2,970 p.)
+1 głos
1 odpowiedź 470 wizyt
pytanie zadane 9 lutego 2022 w C i C++ przez Dynamic Bywalec (2,910 p.)
0 głosów
3 odpowiedzi 172 wizyt
pytanie zadane 13 grudnia 2019 w C i C++ przez amtrax Dyskutant (9,630 p.)

92,453 zapytań

141,262 odpowiedzi

319,086 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!

...