Wypisać liczbę największą z podanych 9 liczb

0

Tak jak w temacie. Mam stworzone takie coś:


int main()
{

    double q,w,e,r,t,y,u,i,o,a;
    printf ("Podaj dziewiec liczb\n");
    scanf ("%lf",&q);
    scanf ("%lf",&w);
    scanf ("%lf",&e);
    scanf ("%lf",&r);
    scanf ("%lf",&t);
    scanf ("%lf",&y);
    scanf ("%lf",&u);
    scanf ("%lf",&i);
    scanf ("%lf",&o);
    if (q>w) q=a;
     if (w>q) w=a;
      if (e>q,w) e=a;
       if (r>q,w,e) r=a;
        if (t>q,w,e,r) t=a;
         if (y>q,w,e,r,t) y=a;
          if (u>q,w,e,r,t,y) u=a;
           if (i>q,w,e,r,t,y,u) i=a;
            if (o>q,w,e,r,t,y,u,i) o=a;
    printf ("Twoja najwieksza liczba to %f",a);
    return 0;
}

 

Przerabiałem to już na 100x sposobów, ale zawsze wyświetla mi albo 0 albo pierwszą podaną liczbę. Nie wiem co zrobić z tymi if'ami. Proszę o radę.

0

Utwórz tablicę z tymi liczbami, zamiast zapisywania ich w pojedynczych zmiennych. Po pobraniu liczb przeleć w pętli całą tablicę zapisując największą z liczb do osobnej zmiennej - tyle. btw. to co robisz nie ma sensu.

0

Nigdy więcej tak nie rób :D.
Tablice, pętle etc.

int max = q;
if( w > max) max = w;
if( e > max) max = e;
if( r > max) max = r;
if( t > max) max = t;
if( y > max) max = y;
if( u > max) max = u;
if( i > max) max = i;
if( o > max) max = o;
0

@MalyJa a teraz przerób ten kod tak żeby można bylo wpisać 1000 liczb. Nadal będziesz to w ten sposób chciał zrobić? Nie? No wlaśnie. Napisz to tym razem z glową i dwiema pętlami.

0

A po co komplikujesz sobie życie? 2 zmienne w tym jedna na aktualnie największą. Jak wczytana będzie większa od największej, to staje się największą.

ps starczy jedna pętla, z 3 zmienną jako iteratorem.

0
#include <stdio.h>

int main()
  {
   int i;
   double max,v;
   printf("Podaj dziewiec liczb: ");
   for(i=0;i<9;++i)
     {
      scanf("%lf",&v);
      if((!i)||(max<v)) max=v;
     }
   printf("Twoja najwieksza liczba to %lf",max);
   return 0;
  }
0

Bardzo dziękuję za pomoc, rzeczywiście pogubiłem się w tym wszystkim ^^
@Up People
Mam tylko małe pytanie co znaczy ten wykrzyknik przed i (!i)?

0
#include <stdio.h>

 int main()
{
    double wynik = 0;
    scanf("%lf", &wynik);
    int i = 0;
    for (i = 1; i< 9; ++i)
    {
        double liczba = 0;
        scanf("%lf", &liczba);
        if (liczba > wynik) wynik = liczba;
    }
    printf("%lf", wynik);
    return 0;
}

Ten będzie troszkę szybszy, ale przy tak małej ilości liczb różnica będzie niezauważalna.

0
#include <stdio.h>

int main()
  {
   int i;
   double min,max,v;
   printf("Podaj ciag 9 liczb: ");
   for(i=0;i<9;++i)
     {

      scanf("%lf",&v);
      if((!i)||(max<v)) max=v;
      if((!i)||(min>v)) min=v;
     }
   printf("Twoja najwieksza liczba to %lf\n",max);
   printf("Twoja najmniejsza liczba to %f",min);
   return 0;
  }
 

Zmodyfikowałem program tak, żeby dodatkowo pokazywał najmniejszą wartość . Co mógłbym zrobić żeby pokazywał dwie największe wartości oraz dwie najmniejsze ?

0
  1. Dodatkowa zmienna i dodatkowe if'y
  2. Zapisanie do tablicy i sortowanie
  3. Zapisanie do tablicy i kilkakrotne wywołanie partition
  4. Napisanie postu w dziale oferty pracy
0
      if((!i)||(max<v)) max=v;
      if((!i)||(min>v)) min=v;
```cpp if (!i) { if (max<v) max="v;" if="if" (min="(min">v) min=v; } ```
1
Azarien napisał(a):
      if((!i)||(max<v)) max=v;
      if((!i)||(min>v)) min=v;
if (!i)
{
    if (max<v) max=v;
    if (min>v) min=v;
}

Chyba trochę przepracowałeś się dziś :D

if(!i) min=max=v
else if(max<v) max=v;
else if(min>v) min=v;

1 użytkowników online, w tym zalogowanych: 0, gości: 1